這個錯誤比較詭異,有不少問題會引起這個錯誤,主要問題大表中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。