2012-12-04 22 views
2

我在Django和MySQL中有一个应用程序,在我的模型中我有几个字段指定为TextField,当我运行syncdb时创建了我的模型的表并创建了指定的列longtext数据类型,迄今为止非常好。Django-MySQL enable Row_Format =使用syncdb压缩

但是当我尝试,表中我碰到下面的错误

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

我改变了列类型设置为文本和斑点,并没有解决问题的输入信息。

我一直在阅读关于这个错误,是由于超过8126bytes收入信息的行。所以我改变了MySQL的配置来使用文件类型Barracuda而不是Antepode,我一直在阅读它允许压缩发送信息到不同的文件。

但这并没有解决问题,MySQL文档(https://dev.mysql.com/doc/refman/5.5/en/innodb-compression-usage.html)告诉我,我必须指定ROW_FORMAT = COMPRESSED当我创建表,但是这是通过执行syncdb做过,

有没有办法来指定这些syncdb创建表时的设置,还是我必须手动创建表而不使用syncdb?

欢迎任何其他建议,在我的应用程序中,我必须存储多个工作表和报告。我已经按照文档的一部分在我的表格中定义了一列。

回答

1

我解决了这个错误使用的是InnoDB

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

我们第一次将文件格式设置为梭子鱼,使每个表的全局变量一个文件在MySQL中添加大数据排在MySQL中使用:

SET GLOBAL innodb_file_format = Barracuda;
SET GLOBAL innodb_file_format_check = ON; SET GLOBAL innodb_format_max = Barracuda; SET GLOBAL innodb_file_per_table = ON;

我用phpmyadmin查询。

然后,在运行syncdb之后,我们转到表中出现大行的问题,进入标签Operations-> Table Options,然后将'ROW_FORMAT'修改为'COMPRESS'。我希望这有帮助