【问题标题】:Django-MySQL enable Row_Format=Compress with syncdbDjango-MySQL 启用 Row_Format=使用 syncdb 压缩
【发布时间】:2012-12-04 16:18:39
【问题描述】:

我在 Django 和 MySQL 中有一个应用程序,在我的模型中,我有几个指定为 TextField 的字段,当我运行 syncdb 时,会创建我的模型的表,并且使用 longtext 数据类型创建指定的列,到目前为止一切都很好。

但是当我尝试在表格中输入信息时,我收到以下错误

DatabaseError: (1118, '行大小太大。最大行大小为 使用的表类型,不包括 BLOB,是 8126。你必须改变 一些列到 TEXT 或 BLOB")

我将列类型改为Text和Blob,并没有解决问题。

我一直在阅读有关此错误的信息,这是由于按行显示的收入信息超过 8126 字节。所以我更改了 MySQL 的配置以使用 Barracuda 而不是 Antepode 文件类型,我一直在阅读它允许将信息压缩到不同的文件。

但这并没有解决问题,在MySQL文档中(https://dev.mysql.com/doc/refman/5.5/en/innodb-compression-usage.html)告诉我创建表时必须指定ROW_FORMAT = COMPRESSED,但这是由syncdb完成的,

有没有办法在syncdb创建表时指定这些设置,或者我必须手动创建表而不使用syncdb?

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

【问题讨论】:

    标签: mysql django syncdb


    【解决方案1】:

    我解决了使用innodb在MySQL中添加大数据行的错误

    DatabaseError: (1118, '行大小太大。最大行大小为 使用的表类型,不包括 BLOB,是 8126。你必须改变 一些列到 TEXT 或 BLOB")

    首先我们必须将文件格式设置为梭子鱼,并在 MySQL 中为每个表全局变量启用一个文件:

    SET GLOBAL innodb_file_format = 梭子鱼;
    设置全球 innodb_file_format_check = ON; SET GLOBAL innodb_format_max = 梭子鱼; SET GLOBAL innodb_file_per_table = ON;

    我使用 phpmyadmin 进行查询。

    然后在运行 syncdb 后,我们转到存在大行问题的表,转到选项卡 Operations->Table Options,然后将“ROW_FORMAT”修改为“COMPRESS”。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 2015-10-08
      • 2013-09-19
      • 1970-01-01
      • 2013-11-13
      • 2011-09-01
      • 2014-10-24
      • 2011-05-04
      • 2012-09-21
      相关资源
      最近更新 更多