希望你度过美好的一天。我有一张表,准确地说是470列。我正在进行Django单元测试,当我运行命令python manage.py test:时,测试不会执行,并给出错误
行大小过大(>8126(。将某些列更改为TEXT或BLOB,或使用ROW_FORMAT=DYNAMIC或ROW_FORMT=COMPRESED可能会有所帮助。在里面当前行格式,768字节的BLOB前缀以内联方式存储
为了解决这个问题,我试图增加MySQL my.cnf文件中的innodb_page_size
。当我更改my.cnf文件中的值后重新启动MySQL服务器时,MySQL不会重新启动。
我在stackoverflow上尝试了几乎所有可用的解决方案,但都没有成功。
MYSQL版本=5.5.57Ubuntu版本=16.04
如有任何帮助,我们将不胜感激。谢谢
由于我从未见过有人使用更大块大小的功能,因此我没有使其工作的经验。我建议你不要第一个尝试。
相反,我提供了几种可能的解决方案。
不要盲目使用VARCHAR(255)
;使所涉及的数据的长度切合实际。
对于只能具有ascii的列,不要使用uf8(或utf8mb4(。示例:邮政编码、十六进制字符串、UUID、country_code等。请使用CHARACTER SET ascii
。
将表垂直分区。也就是说,将它吐到具有相同PRIMARY KEY
的两个表中。
不要在列之间展开数组;使用另一个表并在其中有多行。例如:phone1、phone2、phone3。