首页 文章

转换InnoDB失败 . ERROR 1114表已满

提问于
浏览 828
1

我在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 . 转换达到30 000行!

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

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

我查看了一些邮件列表中的值 innodb_file_per_table 数据,但我没有找到这个变量 . 我没有 innodb_data_file_path 变量

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

想法?

1 回答

  • 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;
    

相关问题