昨晚我向 mySQL 数据库中的存储过程添加了一个参数。我访问了它,弄乱了参数,并决定再次删除该参数以进行测试。在没有参数的情况下重新创建过程几分钟后,我的命令对象仍在提示缺少参数。这是 mySQL、MySQL/Connector、ADO 或企业库的错误吗?我该怎么办?
最佳答案
默认情况下,MySQL 在您的存储过程中缓存查询。查看是否启用了查询缓存:
SHOW VARIABLES LIKE 'query_cache%'
存储过程调用不会被 MySQL 缓存,但如果 query_cache_type
为 ON,这将影响从过程中发出的查询的缓存。可能导致 MySQL 在几分钟内返回相同的结果。尝试刷新缓存,或者更好的是,如果更新后的过程不断返回以前的结果集,则重置查询缓存以删除所有查询:
RESET QUERY CACHE
这应该会消除 MySQL 服务器的任何缓存。
下次发生这种情况时,您可以通过另一个不使用 MySQL/Connector 或 Enterprise Library 的工具手动执行该过程。这将告诉您旧结果集是否由 MySQL 或应用程序中的驱动程序和应用程序 block 缓存。
编辑: 请阅读下面的评论,来自 desertwebdesign。重新创建存储过程后,断开连接。连接池可能使连接保持打开状态,因此最好终止来自 MySQL 的连接。如果您使用进程/ super 权限登录,大多数查询浏览器都有一个选项卡,允许您终止 MySQL 中的连接。
SHOW FULL PROCESSLIST
KILL CONNECTION thread_id
关于.net - MySQL缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/286585/