这个错误比较诡异,有不少问题会引起这个错误,主要问题大表中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。