最近在批量迁移数据写入到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。