Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'List'. |
---|
该错误为包或任何生成的/中间字符串超过了服务允许的大小。这个问题经常发生在load data file中,有时也发生在update、insert时。该值默认16M,以捕获大的(可能是错误的)数据包。
[Mysql] >show global variables like 'max_allowed_packet';
基本概念:
max_allowed_packet 即最大允许传输包的大小,也就是查询出结果后,把结果发送到客户端时,每个网络包的最大大小。
1、默认为16M(16777216字节),最大为1G (1073741824字节)
2、修改时需要设为1024的整数倍
3、客户端和服务端都有这个参数,最好保持一致
设置依据:此参数要根据业务实际需求设定
1、是否存在大字段(blob、text等),若存在需要适当调大
2、内存大小设置,innodb_buffer_pool是否足够大
影响范围:
设置太大,会使用更多内存,很容易导致丢包,无法捕捉异常大事物包SQL
设置太小,可能会导致程序报错,备份失败,也会导致频繁的收发网络报,影响系统性能
修改:一般32M足够
[Mysql] >set global max_allowed_packet =33554432;
修改配置文件:
[mysqld]
max_allowed_packet=32M