mysql 錯誤 Row size too large (> 8126)解決辦法

這個錯誤比較詭異,有不少問題會引起這個錯誤,主要問題大表中varchar和text(longtext)字段太多,超出mysql的默認Row Size 8k的限制。mysql

若是涉及的表沒有事務和外鍵的約束,能夠把表類型改成MyISAM也能夠解決。sql

下面的方法針對表類型爲InnoDB的方法。數據庫

基礎設置:性能

innodb_file_per_table=1

innodb_file_format=Barracuda

若是解決不了,那麼須要日誌

innodb_page_size=32K

mysql默認的innodb_page_size爲16K,這裏改動該參數會有問題,致使mysql啓動不了。 須要先把數據導出,而後刪除ibdata和ib_logfile文件,而後啓動數據庫,恢復數據。code

若是仍是報Row size too large錯誤,那麼多是由於日誌文件設置過小引發的,須要調整該參數orm

innodb_log_file_size=148M

大體就是這些吧,應該能夠解決大多數了。事務

這裏須要注意一點,若是配置文件中innodb_page_size爲32k或者64k,那麼表的ROW_FORMAT=COMPRESSED是不支持,能夠選擇爲DYNAMIC,讀取性能會有點降低。innodb

可能最終的解決方案是分表吧,這裏就不深刻討論了。table

若是還解決不了,呃,仍是祭天吧。 擦乾眼淚,繼續搞ta。

相關文章
相關標籤/搜索