mysql > 5.5 the default is INNODB
mysql < 5.5 the default engine is MyISAM
Before we convert tables we can first view the table engine with:
Note: Change 'db_name' to your database
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'db_engine';Now we have viewed the table engine we can go ahead and convert the tables.
SET @DATABASE_NAME = 'db_name'; SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements FROM information_schema.tables AS tb WHERE table_schema = @DATABASE_NAME AND `ENGINE` = 'MyISAM' AND `TABLE_TYPE` = 'BASE TABLE' ORDER BY table_name DESC;An example of this being run is:
mysql> SET @DATABASE_NAME = 'table_engine'; Query OK, 0 rows affected (0.00 sec) mysql> mysql> SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements -> FROM information_schema.tables AS tb -> WHERE table_schema = @DATABASE_NAME -> AND `ENGINE` = 'MyISAM' -> AND `TABLE_TYPE` = 'BASE TABLE' -> ORDER BY table_name DESC; +-----------------------------------------------------+ | sql_statements | +-----------------------------------------------------+ | ALTER TABLE `wp_users` ENGINE=InnoDB; | | ALTER TABLE `wp_usermeta` ENGINE=InnoDB; | | ALTER TABLE `wp_term_taxonomy` ENGINE=InnoDB; | | ALTER TABLE `wp_term_relationships` ENGINE=InnoDB; | | ALTER TABLE `wp_terms` ENGINE=InnoDB; | | ALTER TABLE `wp_posts` ENGINE=InnoDB; | | ALTER TABLE `wp_postmeta` ENGINE=InnoDB; | | ALTER TABLE `wp_popularpostssummary` ENGINE=InnoDB; | | ALTER TABLE `wp_popularpostsdata` ENGINE=InnoDB; | | ALTER TABLE `wp_options` ENGINE=InnoDB; | | ALTER TABLE `wp_links` ENGINE=InnoDB; | | ALTER TABLE `wp_comments` ENGINE=InnoDB; | +-----------------------------------------------------+ 12 rows in set (0.00 sec)