![](/img/trans.png)
[英]MySql.Data.MySqlClient.MySqlException: Timeout expired
[英]MySqlException: Timeout expired - Increasing Connection Timeout Has Had No Effect
随着数据库大小的增加,我的查询执行时间更长。 查询已经过优化和必要,但我的C#控制台应用程序最近给了我这个错误:
Unhandled Exception: MySql.Data.MySqlClient.MySqlException: Timeout expired.
增加连接字符串中的连接超时没有帮助; 我增加了它
连接超时= 28800
至
连接超时= 128800
但尽管有这种变化,我仍然会得到错误。
如果我从MySQL工作台运行查询它只需要大约10秒,所以我不知道如何防止这种未处理的异常。
除了“查询所花费的时间”之外还有其他什么可以产生这种异常吗?
我以前遇到过这个问题。 ConnectTimeout属性仅适用于连接到数据库时发生的超时,而不适用于查询。
但是, CommandTimeout指定等待查询返回的时间。 我相信默认值是30秒。 仔细检查MySql库的文档,但对于SqlCommand,CommandTimeout的秒数不是毫秒。
如果您能告诉我们您的方法,我们可以帮助您找到错误。
如果历史(和SO)教会了我什么,那就是它
"You better be using Paramaterized SQL statements before posting any code"
如果你不确定如何使用参数化命令这里是一个例子(取自我没有使用参数化SQL的答案之一)
var command = new MySqlCommand(
"SELECT * FROM tblPerson WHERE LastName = @Name AND Height > @Height AND BirthDate < @BirthDate", connection);
command.Parameters.AddWithValue("@Name", lastname);
command.Parameters.AddWithValue("@Height", height);
command.Parameters.AddWithValue("@Name", birthDate);
如果你还没有尝试,并发布一些代码:)
您还可以尝试在连接字符串中添加“default command timeout = 360”; 例如
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;default command timeout=20;
此选项可从Connector / NET版本5.1.4获得。
[我从connectionstrings.com/mysql/解除了这个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.