老莫的笔记本  
  
查看: 1068|回复: 0

laravel 大量数据 插入失败

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2019-7-3 10:58:34 | 显示全部楼层 |阅读模式
  1. 遇到一个奇葩的报错 SQLSTATE[HY000]: General error: 1390 Prepared statement contains too many placeholders
复制代码


这个报错怎么回事呢:

1. 我利用DB门面进行了数据批量导入【上传xls文件】。
2. 使用的 语句是:
  1. // $res = DB::table($xlistName)->insert($array[0]);
复制代码
3.实践证明 单次导入是正常的。数据量小于5000条 一点问题没有;
4.后来我上传了大概两万多条  这条语句就报错 1390了  。其实就是 插入的列和插入的行 m*n 大于 65535
5.解决方法[失败版]: 我看了很多 上来就用laravel 的 chark 的。 好神奇的样子。就是我看不懂
6.当时的解决办法:利用 array_chunk 进行数组拆分


  1.                 //   获取新建的表名
  2.               $xlistName = Cache::get('xlist');

  3.              // 拆开了再存[ 一次性插入过大就凉凉 所以拆开 ] $mmm 是 需要载入的数据
  4.               $t = array_chunk($mmm,4000);

  5.              // 分批次批量导入

  6.             foreach ($t as $v) {

  7.                 DB::table($xlistName)->insert($v);

  8.             }
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表