MySQL:转向Barracuda - 错误1118

时间:2015-05-02 22:16:53

标签: mysql

我正在尝试使用COMPRESSION行格式转换为Barracuda文件格式,以避免在架构不佳的表上出现更新问题。

这是一个临时措施,直到我们能够正确地重新构建表格。

我一直按照此处和MySQL文档中的说明移至InnoDB Barracuda(来自Antelope),并对我的配置文件执行了以下更新:

[mysqld]
innodb_file_per_table=1
innodb_file_format=Barracuda
innodb_file_format_max=Barracuda
innodb_log_file_size=64M

重新启动mysql之后,我尝试了以下SQL语句:

ALTER TABLE <tablename>
   ROW_FORMAT=COMPRESSED;

这导致以下错误:

Row size too large. The maximum row size for the used table type, not
counting BLOBs, is 8126. This includes storage overhead, check the
manual. You have to change some columns to TEXT or BLOBs

我已将所有VARCHAR字段更新为TINYTEXT字段,并使用此处的PERL脚本检查表中的总最大长度(总计:6766,最少:3178,列:384):https://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html in评论(Rich Tomasso于2005年4月5日下午4:30发布)。

我还尝试使用CREATE TABLE命令为给定的表结构创建一个新表,希望在使用压缩行格式创建新数据后重新导入数据,但CREATE TABLE语句失败与上述相同的错误。

由于这是一个遗留数据库,我想避免重新导入,拆分表或任何其他主要的重做工作。

我有什么想法可以向前推进并完成转换到Barracuda的桌子?

1 个答案:

答案 0 :(得分:0)

所以,对我来说,临时解决方案是将违规表转换为MyISAM格式。 alter table语句

ALTER TABLE <tablename>
    ENGINE=MyISAM;

工作得很好。由于我们没有使用外键,我们在那里没有问题。

当我们重组和优化数据库架构时,我们将回到InnoDB。