Django-MySQL 启用 Row_Format=使用 syncdb 压缩

Posted

技术标签:

【中文标题】Django-MySQL 启用 Row_Format=使用 syncdb 压缩【英文标题】:Django-MySQL enable Row_Format=Compress with 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?

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

【问题讨论】:

【参考方案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”。

希望对你有帮助

【讨论】:

以上是关于Django-MySQL 启用 Row_Format=使用 syncdb 压缩的主要内容,如果未能解决你的问题,请参考以下文章

django-mysql表的增删改查

Django-MySQL数据库使用01

如何在 Django 中管理 Postgres 枚举类型?

django - MySQL 严格模式,设置中有数据库 url

GOOGLE COLAB 之TENSORBOARD 启用

任务输出缓存已启用,但未配置或启用构建缓存