最近在批量遷移數據寫入到mysql表中的時候,出現一下報錯。
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的總佔位符爲:6x11000=66000.
66000大於mysql最大佔位符爲65535,故而mysql報錯。
結論:寫入數據爲m列,n行。m*n必須小於65535。