MySQL表引擎未更新(或更新未反映)

时间:2011-10-10 15:51:48

标签: mysql database magento alter-table

我有一个包含400多个表的大型MySQL数据库。几乎所有表都需要根据框架要求更改为InnoDB。

我正在运行以下查询以查看db的当前表引擎:

 SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'DATABASE_NAME';

我创建了一个平面文件,其中包含所有表格的列表,其中包含正确的“ALTER TABLE”语法:

 ALTER TABLE  wishlist_item ENGINE=InnoDB;
 ...etc...

我使用以下语法运行此文件:

mysql -u USERNAME -pPASSWORD DATABASE_NAME < alter_staging_tables.txt

然而,当我跑步时:

 SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'DATABASE_NAME';

尽管我的文件正在运行并且更改了引擎类型,它仍然将所有表显示为MyISAM。我甚至进去了,手动进行了一次改动:

mysql> ALTER TABLE  zendesk ENGINE=InnoDB;
Query OK, 8 rows affected, 1 warning (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0

但是当我选择时:

| zendesk                                           | MyISAM | 

它将表显示为MyISAM。我究竟做错了什么? TIA。

更新:MySQL版本:

mysql -v
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 306675
Server version: 5.0.77-log Source distribution

更新: 所以改变并不坚持:

mysql> ALTER TABLE  zendesk ENGINE=InnoDB;
Query OK, 8 rows affected, 1 warning (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0

mysql> show warnings;
+---------+------+-------------------------------------------------+
| Level   | Code | Message                                         |
+---------+------+-------------------------------------------------+
| Warning | 1266 | Using storage engine MyISAM for table 'zendesk' | 
+---------+------+-------------------------------------------------+
1 row in set (0.00 sec)

1 个答案:

答案 0 :(得分:3)

您确定InnoDB已启用吗?您可以查看SHOW ENGINES

请注意,默认情况下,MySQL只会忽略无法识别的ENGINE指令,并发出警告(除非您设置了NO_ENGINE_SUBSTITUTION)。您的ALTER TABLE命令确实发出了一个警告,可能是由于此:

mysql> ALTER TABLE  zendesk ENGINE=InnoDB;
Query OK, 8 rows affected, 1 warning (0.00 sec)