1.问题描述
在查询视图时,执行存储过程时Java代码报错:java.sql.SQLException: Prepared statement needs to be re-prepared;单独调用存储过程也是报错:Prepared statement needs to be re-prepared,代码和存储过程没问题;这是数据库设置问题。
2.问题排查
mysql的变量值设置不合理,原有的存储过程里增加了个 左链接 控制台抛出 Prepared statement needs to be re-prepared 异常 数据库交换空间已满
3.问题解决
- 查看 table_open_cache 量 mysql 的两个全局变量(打开表的缓存数量,表定义缓存数量)的设置值过小,而你的数据库表数量较多的情况。
1、打开表的缓存数量(table_open_cache)查询sql:
SHOWVARIABLESLIKE'%table_open_cache%';
2、表定义缓存数量(table_definition_cache) 查询sql :
SHOWVARIABLESLIKE'%table_definition_cache%';
- mysql引起的错误,设置
- set global table_open_cache=16384; 表描述符缓存大小
- set global table_definition_cache=16384;