《MySQL-1390 Prepared statement contains too many placeholders》

以前的一個項目,在進行mysql執行預插入語句的時候,如果預插入的數據條數過多,則會報錯。

具體報錯爲:

1390 Prepared statement contains too many placeholders

字面意思大概是預執行語句包含了太多的佔位符。
查詢了相關的資料,在stackoverflow上面發現了類似問題(佔位符過多),大概意思是Mysql支持的佔位符最多爲65535(2^16-1)個,具體原因暫不清楚。

原因分析:
mysql使用PDO進行寫入的時候,PDO支持最大佔位符爲65535。

當insert的表爲6列(即6個字段),寫入記錄的行數爲11000時,則insert的總佔位符爲:6x11000=66000.

66000大於mysql最大佔位符爲65535,故而mysql報錯。

結論:寫入數據爲m列,n行。m*n必須小於65535。
故解決的辦法就是分批次插入,減少每次插入的數量即可。

原文:https://blog.csdn.net/angelina_zf/article/details/52730001

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章