MySQL - Barracuda文件格式&行压缩以避免ERROR 1118行大小太大

时间:2013-12-03 13:45:09

标签: mysql innodb data-warehouse denormalization

我正在尝试使用mysql 5.5.31(社区版)进行行压缩,以避免在仓库类型上下文中进行非规范化时出现以下错误。

ERROR 1118 (42000): Row size too large. The maximum row size for the used
table type, not counting BLOBs, is 65535. You have to change some columns
to TEXT or BLOBs

我已启用各种系统变量,如下所示:

mysql> show variables like 'innodb_file%';
+--------------------------+-----------+
| Variable_name            | Value     |
+--------------------------+-----------+
| innodb_file_format       | Barracuda |
| innodb_file_format_check | ON        |
| innodb_file_format_max   | Barracuda |
| innodb_file_per_table    | ON        |
+--------------------------+-----------+

但是当我尝试将以下内容作为测试时,我仍然会得到相同的行大小错误。

create table foo (  first varchar(10000),
    second varchar(10000),
    third varchar(10000),
    fourth varchar(10000),
    fifth varchar(10000),
    sixth varchar(10000),
    seventh varchar(10000)
 ) ENGINE=InnoDB ROW_FORMAT=Compressed KEY_BLOCK_SIZE=8;

有谁知道我在这里可能会缺少什么?有几个消息来源表明这应该有用。

MYSQL - How to workaround the row size limit of 66 KBytes

Change limit for "Mysql Row size too large"

Django-MySQL enable Row_Format=Compress with syncdb

1 个答案:

答案 0 :(得分:0)

https://dba.stackexchange.com/a/22463 - 这表明即使在Barracuda下,合并的行长度仍有限制。

如果你将varhcar(x)更改为text / blob,它在我的测试中起作用:

create table foo_text ( first longtext, second longtext, third longtext, fourth longtext, fifth longtext, sixth longtext, seventh longtext ) ENGINE=InnoDB ROW_FORMAT=Compressed KEY_BLOCK_SIZE=8;