{"id":233253,"date":"2023-02-10T15:13:00","date_gmt":"2023-02-10T12:13:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233253"},"modified":"2023-02-10T15:16:16","modified_gmt":"2023-02-10T12:16:16","slug":"ett-enkelt-php-kommandoradsverktyg-foer-att-konvertera-mysql-tabeller-fraan-myisam-till-innodb-i-specificerad-databas","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/ett-enkelt-php-kommandoradsverktyg-foer-att-konvertera-mysql-tabeller-fraan-myisam-till-innodb-i-specificerad-databas\/","title":{"rendered":"Ett enkelt PHP kommandoradsverktyg f\u00f6r att konvertera MySQL-tabeller fr\u00e5n MyISAM till InnoDB i specificerad databas"},"content":{"rendered":"<p><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/hur-man-skriver-ut-mysql-tabellsammanfattning-med-php\/\" title=\"MySQL\">MySQL<\/a> MyISAM-databasmotorn har avskrivits i den senaste versionen sedan 5.5.1. MyISAM \u00e4r tabelll\u00e5sande medan InnoDB (nu standarddatabasmotorn f\u00f6r MySQL sedan 5.5.1) anv\u00e4nder gungning p\u00e5 radniv\u00e5. InnoDB b\u00f6r vara den f\u00f6redragna och rekommenderade databasmotorn om du vill skapa nya applikationer\/tabeller. En brist med MyISAM-tabeller \u00e4r att de inte st\u00f6der transaktioner. B\u00e5de InnoDB och MyISAM st\u00f6der Full Text Search Index.<\/p>\n<p>Du kan anv\u00e4nda ALTER TABLE-tabellen ENGINE=INNODB f\u00f6r att \u00e4ndra en tabell till InnoDB men om du har m\u00e5nga tabeller i en databas, t.ex. WordPress, blir det tr\u00e5kigt att leta efter MyISAM-tabeller och konvertera en efter en.<\/p>\n<p>Lyckligtvis kan f\u00f6ljande <a href=\"https:\/\/helloacm.com\/php-client-of-utopian-api\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP<\/a> k\u00f6ras p\u00e5 kommandoraden, och det tar parametrar f\u00f6r databasnamn &#8211; som du kan skicka m\u00e5nga databaser, och det kommer att leta efter de tabellerna i dessa databaser som f\u00f6r n\u00e4rvarande \u00e4r MyISAM-motor och utf\u00e4rda kommandot ALTER TABLE f\u00f6r varje.<\/p>\n<pre><code>&lt;?php\n\/\/ &lt;a class=\"vglnk\" target=\"_blank\" href=\"https:\/\/helloacm.com\/a-simple-php-command-line-tool-to-convert-mysql-tables-from-myisam-to-innodb-in-specified-database\/\" rel=\"nofollow\"&gt;&lt;span&gt;https&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;helloacm&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;a&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;simple&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;php&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;command&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;line&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;tool&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;to&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;convert&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;mysql&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;tables&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;from&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;myisam&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;to&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;innodb&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;in&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;specified&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;span&gt;database&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;\/a&gt;\nfunction ConvertAllTablesToInnoDB($database) {\n\u00a0 define(\"DB_HOST\", \"localhost\");\n\u00a0 define(\"DB_USER\", \"root\");\n\u00a0 define(\"DB_PASSWORD\", \"password\"); \u00a0\n\u00a0 $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, $database);\n\u00a0 if (!$conn) {\n\u00a0 \u00a0 \u00a0 echo \"Error: Unable to connect to MySQL.\". PHP_EOL;\n\u00a0 \u00a0 \u00a0 echo \"Debugging errno: \". mysqli_connect_errno(). PHP_EOL;\n\u00a0 \u00a0 \u00a0 echo \"Debugging error: \". mysqli_connect_error(). PHP_EOL;\n\u00a0 \u00a0 \u00a0 exit; \u00a0 \u00a0 \u00a0 \u00a0\n\u00a0 } \u00a0 \u00a0 \u00a0\n\u00a0 $sql = \"SELECT TABLE_NAME FROM \n \u00a0 \u00a0 \u00a0INFORMATION_SCHEMA.TABLES\n \u00a0 \u00a0 \u00a0WHERE TABLE_SCHEMA = '$database' \n \u00a0 \u00a0 \u00a0AND ENGINE = 'MyISAM'\n \u00a0\";\n\u00a0 \n\u00a0 $rs = mysqli_query($conn, $sql);\n\u00a0 \n\u00a0 while ($row = mysqli_fetch_array($rs)) {\n\u00a0 \u00a0 \u00a0 $tbl = $row[0];\n\u00a0 \u00a0 \u00a0 $sql = \"ALTER TABLE `$tbl` ENGINE=INNODB\";\n\u00a0 \u00a0 \u00a0 echo $sql. \"n\";\n\u00a0 \u00a0 \u00a0 mysqli_query($conn, $sql);\n\u00a0 }\n}\n\u00a0 \u00a0 \nif ($argc &lt; 2) {\n\u00a0 \u00a0 \u00a0 exit( \"Usage: php $argv[0] database1 database2 ...n\" );\n}\n\u00a0\nfor ($i = 1; $i &lt; $argc; ++ $i) {\n\u00a0 \u00a0 \u00a0 echo \"ConvertAllTablesToInnoDB \". $argv[$i]. \"... n\";\n\u00a0 \u00a0 \u00a0 ConvertAllTablesToInnoDB($argv[$i]);\n}<\/code><\/pre>\n<p>Exempel p\u00e5 anv\u00e4ndning:<\/p>\n<pre><code># php convert_to_innodb.php wordpress\nConvertAllTablesToInnoDB wordpress... \nALTER TABLE `wp_commentmeta` ENGINE=INNODB\nALTER TABLE `wp_comments` ENGINE=INNODB\nALTER TABLE `wp_icl_string_translations` ENGINE=INNODB\nALTER TABLE `wp_imagify_files` ENGINE=INNODB\nALTER TABLE `wp_imagify_folders` ENGINE=INNODB\nALTER TABLE `wp_itsec_lockouts` ENGINE=INNODB\nALTER TABLE `wp_itsec_log` ENGINE=INNODB\nALTER TABLE `wp_itsec_temp` ENGINE=INNODB\nALTER TABLE `wp_links` ENGINE=INNODB\nALTER TABLE `wp_options` ENGINE=INNODB\nALTER TABLE `wp_postmeta` ENGINE=INNODB\nALTER TABLE `wp_posts` ENGINE=INNODB\nALTER TABLE `wp_term_relationships` ENGINE=INNODB\nALTER TABLE `wp_term_taxonomy` ENGINE=INNODB\nALTER TABLE `wp_termmeta` ENGINE=INNODB\nALTER TABLE `wp_terms` ENGINE=INNODB\nALTER TABLE `wp_usermeta` ENGINE=INNODB\nALTER TABLE `wp_users` ENGINE=INNODB\nALTER TABLE `wp_wc_download_log` ENGINE=INNODB\nALTER TABLE `wp_wc_webhooks` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_api_keys` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_attribute_taxonomies` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_downloadable_product_permissions` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_log` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_order_itemmeta` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_order_items` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_payment_tokenmeta` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_payment_tokens` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_sessions` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_shipping_zone_locations` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_shipping_zone_methods` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_shipping_zones` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_tax_rate_locations` ENGINE=INNODB\nALTER TABLE `wp_woocommerce_tax_rates` ENGINE=INNODB\nALTER TABLE `wp_wpio_images` ENGINE=INNODB\nALTER TABLE `wp_yith_ywpar_points_log` ENGINE=INNODB<\/code><\/pre>\n<p>Det finns n\u00e5gra databaser som tillh\u00f6r MySQL t.ex. sys, mysql \u2013 dessa tabeller har motortyper som minne, csv \u2013 v\u00e4nligen konvertera dem inte till InnoDB.<\/p>\n<p>MySQL<\/p>\n<p>Du kanske ocks\u00e5 gillar: <a href=\"https:\/\/justyy.com\/archives\/6617\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP-gadget f\u00f6r att konvertera MyISAM-tabeller i MySQL till InnoDB<\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ett enkelt PHP kommandoradsverktyg f\u00f6r att konvertera MySQL-tabeller fr\u00e5n MyISAM till InnoDB i specificerad databas<\/p>\n","protected":false},"author":1,"featured_media":224526,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[901,724,838,848,901,922,1110,922,807,807,838,848,724,868,868],"tags":[1173],"class_list":{"0":"post-233253","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-koda","8":"category-utvecklaren","9":"category-guide-foer-nyboerjare","10":"category-handledningar","12":"category-oevrig","13":"category-n-a","15":"category-php-9","20":"category-wordpress-9","22":"tag-affiai-sv"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233253","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=233253"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233253\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/224526"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}