【发布时间】:2011-10-10 15:51:47
【问题描述】:
我有一个包含 400 多个表的大型 MySQL 数据库。根据框架要求,几乎所有表都需要更改为 InnoDB。
我正在运行以下查询来查看数据库的当前表引擎:
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)
【问题讨论】:
-
MySQL 的版本?他们中的一些人在这些事情上撒谎......
标签: mysql database magento alter-table