Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从池中获取连接之前经过的超时时间_C#_Mysql_Sql - Fatal编程技术网

C# 从池中获取连接之前经过的超时时间

C# 从池中获取连接之前经过的超时时间,c#,mysql,sql,C#,Mysql,Sql,我得到了一个错误: 连接错误:超时已过期。从池中获取连接之前经过的超时时间。发生这种情况的原因可能是所有池连接都在使用中,并且已达到最大池大小 每当我在浏览器中等待响应很长时间后停止IIS时,它就会出现。如果我试图等待,那么我得到了一个错误,即mscorlib.dll中发生了一个类型为“System.StackOverflowException”的未处理异常,但我得到的错误写得非常旧。我只是写了一个新命令,没有任何异常。[我认为第一次运行错误首先出错,因此所有新错误都不会出现异常] 所以我需要做

我得到了一个错误:

连接错误:超时已过期。从池中获取连接之前经过的超时时间。发生这种情况的原因可能是所有池连接都在使用中,并且已达到最大池大小

每当我在浏览器中等待响应很长时间后停止IIS时,它就会出现。如果我试图等待,那么我得到了一个错误,即mscorlib.dll中发生了一个类型为“System.StackOverflowException”的未处理异常,但我得到的错误写得非常旧。我只是写了一个新命令,没有任何异常。[我认为第一次运行错误首先出错,因此所有新错误都不会出现异常]


所以我需要做什么来解决这个问题。

这个错误意味着连接池没有连接。通常的原因是使用后忘记关闭连接,如:

var con = new MySqlConnection("Server=YourDB;Database=YourDb;...");
con.Open();
var com = con.CreateCommand();
com.CommandText = "select * from YourTable";
此代码忘记关闭连接,因此池少了一个连接。您可以通过添加以下内容来解决此问题:

con.Close();
最后。但是,如果查询抛出异常,将跳过
关闭
,并且您仍然关闭了1个连接

更好的方法是使用语句:

using (var con = new MySqlConnection("Server=YourDB;Database=YourDb;..."))
{
    con.Open();
    var com = con.CreateCommand();
    com.CommandText = "select * from YourTable";
}
通过在连接字符串末尾添加
最大池大小
,可以轻松解决此问题,如:

Server=YourDB;Database=YourDbUid=YourUser;Pwd=YourPwd;max pool size=1;

这将使池大小为1,如果忘记释放一个连接,则会立即触发错误情况。

+1关于将池大小设置为1以进行调试的建议。这对我帮助很大。有可能得到当前的池大小吗?