我在MySQL 5的查询中可以使用的绑定变量数是否有限制?我认为有,但我在参考手册或谷歌搜索中找不到任何信息.
这似乎意味着记忆是唯一的限制,但这似乎有点怀疑.
更新:有一个限制!
runner.rb:47: data_replicator.rb:312:in `prepare': Prepared statement contains too many placeholders (Mysql::Error)
from data_replicator.rb:312:in `set_statement_handle_for'
from data_replicator.rb:287:in `log_query'
from data_replicator.rb:221:in `replicate_table'
from data_replicator.rb:93:in `replicate'
from data_replicator.rb:20:in `run'
这给了我一些更好的搜索!
解决方法:
预准备语句中值的最大占位符数是16位无符号整数的最大值,或者是指定值:65,536.
这可以在MySQL代码中看到:
SQL / sql_prepare.cc:
static bool init_param_array(Prepared_statement *stmt)
{
LEX *lex= stmt->lex;
if ((stmt->param_count= lex->param_list.elements))
{
if (stmt->param_count > (uint) UINT_MAX16)
{
/* Error code to be defined in 5.0 */
my_message(ER_PS_MANY_PARAM, ER(ER_PS_MANY_PARAM), MYF(0));
return TRUE;
}
标签:mysql
来源: https://codeday.me/bug/20190518/1128832.html