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之间的值。