MySQL批量写数据,Prepared statement contains too many placeholders

最近业务调整,需要一次性插入大量的数据到表中的时候,报下面这个错误

 SQLSTATE[HY000]: General error: 1390 Prepared statement contains too many placeholders.

查看MySQL官网的解释:

Error: 1390 SQLSTATE: HY000 (ER_PS_MANY_PARAM)

Message: Prepared statement contains too many placeholders

参考:https://dev.mysql.com/doc/refman/5.7/en/error-messages-server.html

原因分析:
mysql使用PDO进行写入的时候,PDO支持最大占位符为65535。

当insert的表为6列(即6个字段),写入记录的行数为11000时,则insert的总占位符为:6×11000=66000.

66000大于mysql最大占位符为65535,故而mysql报错。

结论:写入数据为m列,n行。m*n必须小于65535。

发表评论

电子邮件地址不会被公开。 必填项已用*标注