最近在批量迁移数据写入到mysql表中的时候,出现一下报错。

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

        

        

1
2
3
查看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的总占位符为:6x11000=66000.

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


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



wKiom1mKwkqwlRagAAESHwJKT3s087.png