转换InnoDB失败。错误1114表已满

时间:2018-12-10 09:36:47

标签: mysql

我在240上的桌子上有转换问题。 ALTER TABLE db_logs ENGINE = INNODB; 谁给我

Errors during migration from MyISAM to InnoDB ... 

我看到错误SQL Error (1114): The table '# sql-667e_61' is full

此表有60,000行,为7.8 GB。 转换达到3万行!

其他小于3GB的表可以毫无问题地进行转换。

我试图创建一个空白的相同表db_logs_innodb,然后从同一问题db_logs表中插入它们,甚至将autocommit = 0放在插入之前。

我查看了某些邮件列表中的值innodb_file_per_table数据,但没有找到此变量。 我没有innodb_data_file_path变量

没有完整的分区。不依赖于文件系统。

想法??

1 个答案:

答案 0 :(得分:0)

更安全的方法是创建空表,更改引擎,从当前表复制数据并重命名表名:

CREATE TABLE db_logs_tmp LIKE db_logs;

ALTER TABLE db_logs_new ENGINE = INNODB;

INSERT INTO db_logs_new SELECT * FROM db_logs; 

ALTER TABLE db_logs RENAME db_logs_old;

ALTER TABLE db_logs_new RENAME db_logs;

如果一切正常,并且您想破坏旧表:

DROP TABLE db_logs_old;