近期设计的程序,有一个用到了视图,可能是逻辑上有点复杂了吧,用数据库工具调试表的时候没有什么问题,程序运行起来就报错Prepared statement needs to be re-prepared。
只要修改table_definition_cache值,调大一点就可以了。
mysql> set table_definition_cache 16384;
具体原因是table_definition_cache定义了打开视图时缓存多少打开表的文件具柄数量,我这个视图逻辑复杂了点,就超出了缓存定义的空间,故而报错。把他调大就好了。