假如有一天你突然发现之前一直在调用的存储过程突然有一天出错了,并且错误信息为ERROR 1615 (HY000):Prepared statement needs to be re-prepared,调试其中的sql发现运行也都正常,那么,很有可能问题就出在mysql的两个全局变量(打开表的缓存数量,表定义缓存数量)的设置值过小,而你的数据库表数量较多的情况。
1、打开表的缓存数量(table_open_cache)
2、表定义缓存数量(table_definition_cache)
这2个全局变量可以用一下sql语句查询:
SHOW VARIABLES LIKE '%table_open_cache%';
SHOW VARIABLES LIKE '%table_definition_cache%';
然后使用一下sql语句进行修改,如:
#调整变量值
SET GLOBAL table_open_cache=5000;
SET GLOBAL table_definition_cache=5000;
然后在执行存储过程,结果恢复正常。