Le moteur de base de données MySQL MyISAM a été déprécié dans la dernière version depuis la 5.5.1. Le MyISAM est un verrouillage de table tandis qu’InnoDB (maintenant le moteur de base de données par défaut pour MySQL depuis 5.5.1) utilise le basculement au niveau de la ligne. InnoDB devrait être le moteur de base de données préféré et recommandé si vous souhaitez créer de nouvelles applications/tables. Une lacune des tables MyISAM est qu’elles ne prennent pas en charge les transactions. InnoDB et MyISAM prennent en charge l’index de recherche en texte intégral.
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ées, par exemple WordPress, il sera fastidieux de rechercher des tables MyISAM et de les convertir une par une.
Heureusement, le PHP suivant peut être exécuté en ligne de commande, et il prend des paramètres de noms de bases de données – que vous pouvez transmettre à de nombreuses bases de données, et il recherchera les tables de ces bases de données qui sont actuellement le moteur MyISAM et émettra une commande ALTER TABLE pour chacun d’eux.
Exemple d’utilisation :
# php convert_to_innodb.php wordpress
ConvertAllTablesToInnoDB wordpress...
ALTER TABLE `wp_commentmeta` ENGINE=INNODB
ALTER TABLE `wp_comments` ENGINE=INNODB
ALTER TABLE `wp_icl_string_translations` ENGINE=INNODB
ALTER TABLE `wp_imagify_files` ENGINE=INNODB
ALTER TABLE `wp_imagify_folders` ENGINE=INNODB
ALTER TABLE `wp_itsec_lockouts` ENGINE=INNODB
ALTER TABLE `wp_itsec_log` ENGINE=INNODB
ALTER TABLE `wp_itsec_temp` ENGINE=INNODB
ALTER TABLE `wp_links` ENGINE=INNODB
ALTER TABLE `wp_options` ENGINE=INNODB
ALTER TABLE `wp_postmeta` ENGINE=INNODB
ALTER TABLE `wp_posts` ENGINE=INNODB
ALTER TABLE `wp_term_relationships` ENGINE=INNODB
ALTER TABLE `wp_term_taxonomy` ENGINE=INNODB
ALTER TABLE `wp_termmeta` ENGINE=INNODB
ALTER TABLE `wp_terms` ENGINE=INNODB
ALTER TABLE `wp_usermeta` ENGINE=INNODB
ALTER TABLE `wp_users` ENGINE=INNODB
ALTER TABLE `wp_wc_download_log` ENGINE=INNODB
ALTER TABLE `wp_wc_webhooks` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_api_keys` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_attribute_taxonomies` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_downloadable_product_permissions` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_log` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_order_itemmeta` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_order_items` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_payment_tokenmeta` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_payment_tokens` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_sessions` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_shipping_zone_locations` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_shipping_zone_methods` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_shipping_zones` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_tax_rate_locations` ENGINE=INNODB
ALTER TABLE `wp_woocommerce_tax_rates` ENGINE=INNODB
ALTER TABLE `wp_wpio_images` ENGINE=INNODB
ALTER TABLE `wp_yith_ywpar_points_log` ENGINE=INNODB
Certaines bases de données appartiennent à MySQL, par exemple sys, mysql – ces tables ont des types de moteur tels que mémoire, csv – veuillez ne pas les convertir en InnoDB.
MySQL
Vous pourriez également aimer : Gadget PHP pour convertir les tables MyISAM de MySQL en InnoDB