type
status
date
slug
summary
tags
category
icon
password
狀況
在使用 Prepare 語句進行 DML 時,遇到了以下錯誤:
原因
查看了 MySQL 文檔並沒在這部分特別說明限制多少數量,之後在源碼
sql/sql_prepare.cc
中找到答案,相關代碼如下: 可以看到當
param_count
> (uint)UINT_MAX16
也就是 2^16 - 1 = 65535 個參數就會引發此錯誤。後續
INSERT 語句在這部分比較容易達到上限,因為當有 M 個欄位 N 筆資料要 INSERT,則 M*N 不能大於 65535,若超過則需要分組拆開 INSERT。
關於此數量限制目前以有人在 MySQL 8.0.22 提出 Feature request ,因此未來也許會加大這個限制或者是提供變數調整。