laravel 大量数据 插入失败
遇到一个奇葩的报错 SQLSTATE: General error: 1390 Prepared statement contains too many placeholders这个报错怎么回事呢:
1. 我利用DB门面进行了数据批量导入【上传xls文件】。
2. 使用的 语句是:
// $res = DB::table($xlistName)->insert($array);3.实践证明 单次导入是正常的。数据量小于5000条 一点问题没有;
4.后来我上传了大概两万多条这条语句就报错 1390了。其实就是 插入的列和插入的行 m*n 大于 65535
5.解决方法[失败版]: 我看了很多 上来就用laravel 的 chark 的。 好神奇的样子。就是我看不懂
6.当时的解决办法:利用 array_chunk 进行数组拆分
// 获取新建的表名
$xlistName = Cache::get('xlist');
// 拆开了再存[ 一次性插入过大就凉凉 所以拆开 ] $mmm 是 需要载入的数据
$t = array_chunk($mmm,4000);
// 分批次批量导入
foreach ($t as $v) {
DB::table($xlistName)->insert($v);
}
页:
[1]