我对 MySql 有疑问,详情如下: 我创建了一个新的模式/数据库,(仅)执行了这个查询:
create table mytable (
id varchar(50) not null,
name varchar(50) null default '',
primary key (id));
create view myview as
select id,name from mytable;
insert into mytable values ('1','aaa');
insert into mytable values ('2','bbb');
insert into mytable values ('3','ccc');
然后,如果我运行这些查询:
select * from mytable;
select * from myview;
prepare cmd from 'select id,name from mytable where id=?';
set @param1 = '2';
execute cmd using @param1;
查询给出了正确的结果(3 行,3 行,1 行)。
但是,如果我运行这个查询,问题就存在了:
prepare cmd from 'select id,name from myview where id=?';
set @param1 = '2';
execute cmd using @param1;
错误:#1615 - 准备好的语句需要重新准备
我做了一些研究,发现以下配置的增量“可能”解决了问题:
increase table_open_cache_instances value
increase table_open_cache value
increase table_definition_cache value
据我所知,上面的查询是常见的标准MySql查询,所以我认为语法没有问题。
我在共享虚拟主机上,使用的 MySql 版本是 5.6.22
但让我感到困惑的是,它只包含 1 个模式/数据库,1 个表,3 个短记录和 1 个 View , 我执行了一个常见的标准 MySql 选择查询, 上面的值的增量真的需要吗? 是否有遇到同样问题的人增加了值(value)并真正解决了问题? 或者,也许您有任何其他您认为可能或将会解决此问题的解决方案?
ps:它不会在一天内发生一次或两次(假设是由某些备份或相关原因引起的),而是在一整天(24 小时)内发生。
谢谢。
最佳答案
每次执行后你都这样做吗?
deallocate prepare cmd;
关于MySql "view"、 "prepared statement"和 "Prepared statement needs to be re-prepared",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29480915/