MySql 连接未使用 .net MySql 连接器关闭
Posted
技术标签:
【中文标题】MySql 连接未使用 .net MySql 连接器关闭【英文标题】:MySql Connection not closing using .net MySql Connector 【发布时间】:2014-08-17 16:25:00 【问题描述】:mysql Connection 将进入睡眠模式而不是在 mysql 中关闭。我正在使用 MySql.Data 6.5.4 版本与 mysql 进行通信。我不确定我在下面的代码中做错了什么。
try
using (var conn = new MySqlConnection(strConnection))
conn.Open();
using (var cmd = new MySqlCommand(strSQLStatement, conn))
var adapter = new MySqlDataAdapter(cmd);
adapter.Fill(ds);
catch (Exception ex)
ErrorLogger.WriteError(string.Format("Failed query 0 with stack trace 1 ", strSQLStatement, ex), "GetData");
【问题讨论】:
这是一个 ASP.NET 应用程序吗?您是否启用了连接缓存? 听起来像是在使用连接池。 【参考方案1】:您的连接正在添加到连接池中,此功能默认开启,因此每当连接关闭时,它都会添加到连接池中。您可以通过连接字符串参数Pooling=false
或静态方法MySqlConnection.ClearPool(connection)
和MySqlConnection.ClearAllPools()
来解决此问题...
来自Official Documentation
Connector/Net 支持连接池,以提高数据库密集型应用程序的性能和可扩展性。这是默认启用的。您可以使用连接字符串选项 Pooling、Connection Reset、Connection Lifetime、Cache Server Properties、Max Pool Size 和 Min Pool Size 将其关闭或调整其性能特征。
连接池的工作原理是在客户端处理 MySqlConnection 时保持与服务器的本机连接。随后,如果打开了一个新的 MySqlConnection 对象,它将从连接池中创建,而不是创建一个新的本机连接。这提高了性能。
【讨论】:
以上是关于MySql 连接未使用 .net MySql 连接器关闭的主要内容,如果未能解决你的问题,请参考以下文章
用C#.net连接MYSQL,怎么连接?还要安装啥吗?急!!!
可怕的 Java Spring Boot 应用程序未使用 Docker-compose java.net.ConnectException 连接到 MySQL:连接被拒绝