gpt4 book ai didi

mysql - Django-MySQL 启用 Row_Format=Compress with syncdb

转载 作者:行者123 更新时间:2023-11-29 03:06:59 25 4
gpt4 key购买 nike

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

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

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 ")

我把列类型改成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 的情况下手动创建表?

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

最佳答案

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

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 ")

首先我们必须将文件格式设置为 Barracuda 并在 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”。

希望对你有帮助

关于mysql - Django-MySQL 启用 Row_Format=Compress with syncdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13707210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com