mysql的rows大小超过8126_mysql大字段(Row size too large8126)
使用mysql并寫入數據時發生錯誤:
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.
因為表中有多個text字段導致的。
解決辦法:
1.?打開mysql的配置my.ini(文件不同 大致是 .ini 擴展名)。在innodb配置出添加:"innodb_file_per_table=1"(直接復制""號內添加到配置文件中)
2.?然后命令檢查下上述開關是否打開。show?variables?like?'%per_table%';結果顯示:innodb_file_per_table?ON
3.?設置mysql全局變量:innodb_file_format?=?Barracuda(梭魚)
命令:set?GLOBAL?innodb_file_format?=?'Barracuda';
然后檢查下是否設置好了:命令:show?GLOBAL?VARIABLES?LIKE?'%file_format%';
總結:
大致是因為mysql-innodb是按照page存儲數據的,每個page max size是16k,然后每個page兩行數據,所以每行最大8k數據。如果你的字段是blob之類的話,會存儲在page之外的溢出區里。
1、innodb默認的approach(羚羊)存儲格式會把每個blob字段的前864個字節存儲在page里,所以你的blob超過一定數量的話,單行大小就會超過8k,
2、innodb的Barracuda(梭魚) 存儲格式對blob字段的處理方式是在page里頭只存儲一個20byte大小的指針,其它全存在溢出區,所以你輕易超不了8k
總結
以上是生活随笔為你收集整理的mysql的rows大小超过8126_mysql大字段(Row size too large8126)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS 11 适配
- 下一篇: ofd 文件发票解析