.net - MySQL缓存

标签 .net mysql database enterprise-library

昨晚我向 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/

相关文章:

c# - ConfigurationPropertyCollection 是否需要是静态的?

database - 使用 SQL Server Express 进行开发时如何管理版本控制?

c# - Kendo UI TreeListDataSource Read() 仅在本地运行时有效

.net - Html Agility Pack 无法使用 xpath 找到元素,但它与 WebDriver 一起工作正常

c# - 如何在 FormView 中进入编辑模式?

MySQL Query 选择上周的数据?

database - DDBMS 中的主要水平碎片 - 简单谓词的完整性

php - 如何在 Laravel 5.2 中编写 sql 连接查询

php - MySQL-如何修改父项/子项选择查询以将更多子项添加到现有数组/JSON?

php - 我的 MySQL session 无法启动