当插入的一行数据大于8k 时。。。mysql会提示错误 如下
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help
这是因为 mysql 默认的page 最大是16k 而page中 单行最大不能超过8k
所以 此时 可以尝试 将 varchar字段改成 text 或者 blob
这样通过 溢出区存储的方式。。。在这个page上 只会存储一小部分数据。更多的数据溢出区存储
但是。。有时候 因为 text 或者blob 字段太多 也会导致 一行数据大于8k
因为 innodb默认的approach(羚羊)存储格式会把每个blob字段的前864个字节存储在page里。。。。这样的话。。一旦有很多个text 或者 blob字段 还是有可能超过8k
此时的处理方式:
#独立表空间。。
innodb_file_per_table=1
#修改存储格式
命令:set GLOBAL innodb_file_format = 'Barracuda';
设置对应表的属性:ROW_FORMAT=COMPRESSED

最后一个最极端的方法。。。
如果你能确定你的业务 不使用事务的话。。。
可以将innodb引擎 修改为myisam引擎
这样就不会有 单行最大8k的问题了
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30127122/viewspace-2657427/ ,如需转载,请注明出处,否则将追究法律责任。