{"id":234194,"date":"2023-02-10T15:37:00","date_gmt":"2023-02-10T12:37:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234194"},"modified":"2023-02-10T15:37:05","modified_gmt":"2023-02-10T12:37:05","slug":"un-outil-de-ligne-de-commande-php-simple-pour-convertir-des-tables-mysql-de-myisam-en-innodb-dans-une-base-de-donnees-specifiee","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/un-outil-de-ligne-de-commande-php-simple-pour-convertir-des-tables-mysql-de-myisam-en-innodb-dans-une-base-de-donnees-specifiee\/","title":{"rendered":"Un outil de ligne de commande PHP simple pour convertir des tables MySQL de MyISAM en InnoDB dans une base de donn\u00e9es sp\u00e9cifi\u00e9e"},"content":{"rendered":"<p><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/comment-imprimer-le-resume-du-tableau-mysql-en-utilisant-php\/\" title=\"Le moteur de base de donn\u00e9es MySQL\">Le moteur de base de donn\u00e9es MySQL<\/a> MyISAM a \u00e9t\u00e9 d\u00e9pr\u00e9ci\u00e9 dans la derni\u00e8re version depuis la 5.5.1. Le MyISAM est un verrouillage de table tandis qu&rsquo;InnoDB (maintenant le moteur de base de donn\u00e9es par d\u00e9faut pour MySQL depuis 5.5.1) utilise le basculement au niveau de la ligne. InnoDB devrait \u00eatre le moteur de base de donn\u00e9es pr\u00e9f\u00e9r\u00e9 et recommand\u00e9 si vous souhaitez cr\u00e9er de nouvelles applications\/tables. Une lacune des tables MyISAM est qu&rsquo;elles ne prennent pas en charge les transactions. InnoDB et MyISAM prennent en charge l&rsquo;index de recherche en texte int\u00e9gral.<\/p>\n<p>Vous pouvez utiliser la table ALTER TABLE ENGINE=INNODB pour changer une table en InnoDB mais si vous avez de nombreuses tables dans une base de donn\u00e9es, par exemple WordPress, il sera fastidieux de rechercher des tables MyISAM et de les convertir une par une.<\/p>\n<p>Heureusement, le <a href=\"https:\/\/helloacm.com\/php-client-of-utopian-api\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP<\/a> suivant peut \u00eatre ex\u00e9cut\u00e9 en ligne de commande, et il prend des param\u00e8tres de noms de bases de donn\u00e9es &#8211; que vous pouvez transmettre \u00e0 de nombreuses bases de donn\u00e9es, et il recherchera les tables de ces bases de donn\u00e9es qui sont actuellement le moteur MyISAM et \u00e9mettra une commande ALTER TABLE pour chacun d&rsquo;eux.<\/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>Exemple d&rsquo;utilisation\u00a0:<\/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>Certaines bases de donn\u00e9es appartiennent \u00e0 MySQL, par exemple sys, mysql &#8211; ces tables ont des types de moteur tels que m\u00e9moire, csv &#8211; veuillez ne pas les convertir en InnoDB.<\/p>\n<p>MySQL<\/p>\n<p>Vous pourriez \u00e9galement aimer\u00a0: <a href=\"https:\/\/justyy.com\/archives\/6617\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gadget PHP pour convertir les tables MyISAM de MySQL en InnoDB<\/a><\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un outil de ligne de commande PHP simple pour convertir des tables MySQL de MyISAM en InnoDB dans une base de donn\u00e9es sp\u00e9cifi\u00e9e<\/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":[915,893,893,717,717,832,915,1110,801,801,832,841,841,862,862],"tags":[1167],"class_list":{"0":"post-234194","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-autre","8":"category-code-2","10":"category-developpeur","12":"category-guide-pour-les-debutants","14":"category-n-a","15":"category-php-3","18":"category-tutoriels","20":"category-wordpress-3","22":"tag-affiai-fr"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=234194"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234194\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224526"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}