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。

相关文章
相关标签/搜索