tp5批量添加问题汇总

tp5提供的批量添加的方法:insertAll

下面说一下可能遇到的问题,
1:字段长度超出:String data,right truncated:1406 Data too long for column ‘content’ at row 1

解决方法:直接修改字段长度就可以,比如原来text,把类型改为longtext

2.某条数据缺少字段:Cardinality violation: 1222 The used SELECT statements have a different number of columns

解决方法:把数据循环一下,打印出每条数据个数,在把不同数据的打印出来,最后把对应字段补齐就OK了

3.字段顺序不一致:String data, right truncated: 1406 Data too long for column ‘XXX’ at row 8
解决方法:把数据重新排序,例如:

$data = [
	'a1'=>$data['a1'],
	'a2'=>$data['a2'],
 ]

4.mysql配置问题:String data, right truncated

解决方法:找到 mysql配置文件,在my.ini里找到sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
把其中的STRICT_TRANS_TABLES,去掉,或者把sqlmode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重启mysql 生效
5.超出配置文件最大限制:插入的数据量过大,导致超出MySQL的设定的最大值

解决方法

1.分批进行批量插入,例如每次插入100条

2.修改max_allowed_packet设定值
这样修改会报错:mysql> set max_allowed_packet=16MB;
ERROR 1232 (42000): Incorrect argument type to variable ‘max_allowed_packet‘

查看下max_allowed_packet是否编辑成功

show VARIABLES like ‘%max_allowed_packet%;

正确的设置方法:

mysql> set global max_allowed_packet= 1*1024*1024*5;

注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值