【发布时间】:2015-04-06 22:46:11
【问题描述】:
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 个视图, 我执行了一个通用和标准的 MySql 选择查询, 上面的值的增量真的需要吗? 有没有遇到同样问题的人增加了值并真正解决了问题? 或者,也许您有任何其他您认为可能或将有助于解决此问题的解决方案?
ps:它不会在一天中发生一次或两次(假设是由某些备份或相关原因引起的),而是整天(24 小时)。
谢谢。
【问题讨论】:
-
刚刚在 5.6.23 中测试过:不可重现......
-
您是在
mysql客户端还是在php代码内部进行操作? -
我正在使用 PHPMyAdmin,如果我使用自定义 PHP 代码使用 mysqli 接口(准备语句命令),问题也会存在。
标签: mysql view prepared-statement