祝您度过愉快的一天。准确地说,我有一个包含 470 列的表。我正在进行 Django 单元测试,当我运行命令 python manage.py test:
时,测试不会执行并给出错误Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline
为了解决此问题,我尝试增加 MySQL my.cnf 文件中的 innodb_page_size
。当我更改 my.cnf 文件中的值后重新启动 MySQL 服务器时,MySQL 将不会重新启动。
我已经尝试了 stackoverflow 上几乎所有可用的解决方案,但没有成功。
MYSQL版本=5.5.57 Ubuntu 版本 = 16.04
任何帮助将不胜感激。谢谢
最佳答案
由于我从未见过任何人使用具有更大块大小的功能,因此我没有使其工作的经验。我建议您不要成为第一个尝试的人。
相反,我提供了几种可能的解决方法。
不要盲目使用VARCHAR(255)
;使所涉及的数据的长度切合实际。
不要对只能包含 ascii 的列使用 uf8(或 utf8mb4)。示例:邮政编码、十六进制字符串、UUID、国家/地区代码等。使用 CHARACTER SET ascii
。
垂直分区表。也就是说,将其分成两个具有相同主键
的表。
不要跨列展开数组;使用另一个表并其中有多行。示例:电话 1、电话 2、电话 3。
关于python - 更改 my.cnf 文件中的 innodb_page_size 不会重新启动 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45964972/