vlambda博客
学习文章列表

MySQL插入单行数据较大时报 Row size too large (> 8126)错误

MySQL插入单行数据较大时报 Row size too large (> 8126): 错误


SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large (> 8126) Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.


原因:MySQL根据配置文件会限制Server端接受的数据包大小。当插入和更新的单行数据较大时,可能会受制于配置文件的参数限制max_allowed_packet,导致写入或者更新失败。

在网上搜了一些,还是没有解决,(还有破坏环境的风险)

最后

将语句中Engine=Innodb 修改为 Engine=MyISAM 

解决问题。

入非要用Innodb

试试这个:

关配置参数:

max_allowed_packet: 服务器发送和接受的最大包长度,当单行数据较大时,需要调整该参数。

innodb_log_file_size: 该参数确定数据日志文件的大小,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间。

innodb_log_buffer_size: 该参数确定日志文件所用的内存大小,设置时用M单位进行设置。缓冲区更大能提高性能,但意外的故障将会丢失数据。MySQL开发人员建议设置为1~8M之间的值。