{"id":233309,"date":"2023-02-10T15:08:00","date_gmt":"2023-02-10T12:08:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233309"},"modified":"2023-02-10T15:16:29","modified_gmt":"2023-02-10T12:16:29","slug":"uma-ferramenta-de-linha-de-comando-php-simples-para-converter-tabelas-mysql-de-myisam-para-innodb-no-banco-de-dados-especificado","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/uma-ferramenta-de-linha-de-comando-php-simples-para-converter-tabelas-mysql-de-myisam-para-innodb-no-banco-de-dados-especificado\/","title":{"rendered":"Uma ferramenta de linha de comando PHP simples para converter tabelas MySQL de MyISAM para InnoDB no banco de dados especificado"},"content":{"rendered":"<p><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/como-imprimir-o-resumo-da-tabela-mysql-usando-php\/\" title=\"O mecanismo de banco de dados MySQL\">O mecanismo de banco de dados MySQL<\/a> MyISAM foi depreciado na vers\u00e3o mais recente desde 5.5.1. O MyISAM \u00e9 um bloqueio de tabela enquanto o InnoDB (agora o mecanismo de banco de dados padr\u00e3o para MySQL desde 5.5.1) emprega o balan\u00e7o em n\u00edvel de linha. O InnoDB deve ser o mecanismo de banco de dados preferido e recomendado se voc\u00ea quiser criar novos aplicativos\/tabelas. Uma defici\u00eancia das tabelas MyISAM \u00e9 que elas n\u00e3o suportam transa\u00e7\u00f5es. Tanto o InnoDB quanto o MyISAM suportam o \u00edndice de pesquisa de texto completo.<\/p>\n<p>Voc\u00ea pode usar ALTER TABLE table ENGINE=INNODB para alterar uma tabela para InnoDB, mas se voc\u00ea tiver muitas tabelas em um banco de dados, por exemplo, WordPress, ser\u00e1 tedioso procurar tabelas MyISAM e converter uma por uma.<\/p>\n<p>Felizmente, o <a href=\"https:\/\/helloacm.com\/php-client-of-utopian-api\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP<\/a> a seguir pode ser executado na linha de comando, e ele recebe par\u00e2metros de nomes de banco de dados \u2013 que voc\u00ea pode passar para muitos bancos de dados, e ele procurar\u00e1 essas tabelas nesses bancos de dados que atualmente s\u00e3o o mecanismo MyISAM e emitir\u00e1 um comando de ALTER TABLE para cada um deles.<\/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>Exemplo de uso:<\/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>Existem alguns bancos de dados que pertencem ao MySQL, por exemplo, sys, mysql \u2013 essas tabelas t\u00eam tipos de mecanismo como mem\u00f3ria, csv \u2013 por favor, n\u00e3o os converta para InnoDB.<\/p>\n<p>MySQL<\/p>\n<p>Voc\u00ea tamb\u00e9m pode gostar: <a href=\"https:\/\/justyy.com\/archives\/6617\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gadget PHP para converter tabelas MyISAM no MySQL para InnoDB<\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uma ferramenta de linha de comando PHP simples para converter tabelas MySQL de MyISAM para InnoDB no banco de dados especificado<\/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":[898,898,722,722,837,920,1110,920,806,806,837,846,846,867,867],"tags":[1170],"class_list":{"0":"post-233309","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-codigo-2","9":"category-desenvolvedor","11":"category-guia-para-iniciantes","12":"category-outro","13":"category-n-a","15":"category-php-8","18":"category-tutoriais","20":"category-wordpress-8","22":"tag-affiai-pt-pt"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=233309"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233309\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224526"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}