将表引擎更改为InnoDB时出错

时间:2015-03-18 16:57:03

标签: mysql

我正在将表引擎从MyISAM更改为InnoDB:

use db;
alter table table engine=innodb;

但是,我遇到了一个非常奇怪的问题。

我可以更改所有表的引擎,但除了某些表, 其名称以_1结尾。

例如,我可以更改表test_2test_xy,但我无法更改表test_1。当我尝试这样做时会发生以下错误:

ERROR 1005 (HY000): Can't create table 'db.#sql-3d9_348' (errno: 139)

以上不仅仅是一个。我有learning_1learning_2learning_xy以及那么多对。

我不知道为什么会这样。因为_1不是特殊字符串,例如反引号,引号,美元符号,数字符号等。我不认为它与db的长度,表名有关。此外,与表格大小无关。

在使用某个表名更改表引擎时是否存在已知错误或问题?

2 个答案:

答案 0 :(得分:0)

我不知道为什么_1是一个问题,但也许这是一种解决方法

use db;
RENAME TABLE test_1 TO test1;
alter table test1 engine=innodb;
RENAME TABLE test1 TO test_1;

当然我会在做任何事之前建议备份

答案 1 :(得分:0)

这是我的错。

它与_1无关,但与列数有关。

名称末尾带有_1的表格有1,001列。

InnoDB

太大了