1

昨晚我在 mySQL 数据库中的存储过程中添加了一个参数。我访问了它,弄乱了参数,并决定再次删除该参数以进行测试。在没有参数的情况下重新创建过程后几分钟,我的命令对象仍在抱怨缺少参数。这是 mySQL、MySQL/Connector、ADO 或企业库的错吗?我能做些什么呢?

4

1 回答 1

1

默认情况下,MySQL 在您的存储过程中缓存查询。查看是否启用了查询缓存:

SHOW VARIABLES LIKE 'query_cache%'

MySQL 不缓存存储过程调用,但如果query_cache_type设置为 ON,这将影响从过程中发出的查询的缓存。可能导致 MySQL 在几分钟内返回相同的结果。尝试刷新缓存,或者更好的是,如果您更新的过程不断返回先前的结果集,则重置查询缓存以删除所有查询:

RESET QUERY CACHE 

这应该消除 MySQL 服务器的任何缓存。

下次发生这种情况时,您可以通过另一个不使用 MySQL/Connector 或 Enterprise Library 的工具手动执行该过程。这将告诉您旧结果集是否由 MySQL 或应用程序中的驱动程序和应用程序块缓存。

编辑:请阅读下面的评论,由 Desertwebdesign 提供。重新创建存储过程后,断开连接。连接池可能会保持连接打开,因此最好从 MySQL 中终止连接。大多数查询浏览器都有一个选项卡,如果您使用进程/超级权限登录,则允许您终止 MySQL 中的连接。

SHOW FULL PROCESSLIST
KILL CONNECTION thread_id
于 2008-11-16T01:35:43.607 回答