MySQL 准备好的语句需要重新准备:排除“Prepared statements need to be re-preparation”错误
遇到“Prepared statements 时” MySQL 中出现“needs be re-prepared”错误,表明服务器端和客户端的表版本不一致 定义。通常,将涉及 MySQL 存储过程的代码迁移到托管服务器后会出现此问题。
错误原因:
发生错误是因为 MySQL 维护表的缓存元数据,用于通过减少为每个查询检索列信息的需要来优化性能。但是,如果本地计算机和托管服务器上的版本之间的表结构发生变化,则缓存的元数据就会过时,并且该语句将无法再成功执行。
潜在解决方案:
根据 MySQL bug #42041 的建议,增加“table_definition_cache”变量的值可以解决该问题。该变量指定 MySQL 将缓存的表的数量。通过增加缓存大小,您可以减少缓存的表定义与实际表定义之间出现差异的可能性。
说明:
SET GLOBAL table_definition_cache = <new_value>;
参考:
对于关于MySQL中语句缓存的更多信息,请参考MySQL官方文档: https://dev.mysql.com/doc/refman/8.0/en/statement-cache.html
以上是为什么我的 MySQL 预准备语句需要重新准备?的详细内容。更多信息请关注PHP中文网其他相关文章!