随着数据库大小的增加,我有一个需要更长时间执行的查询。查询是优化的和必要的,但是我的C#控制台应用程序最近给了我这个错误:
Unhandled Exception: MySql.Data.MySqlClient.MySqlException: Timeout expired.增加连接字符串中的连接时间没有帮助;我从
连接Timeout=28800
至
连接Timeout=128800
不过,尽管有这种变化,我还是会犯错误。
如果我从MySQL工作台运行查询,只需10秒左右,所以我不知道如何防止这个未处理的异常。
除了“查询所需的时间”之外,还有其他东西可以产生此异常吗?
发布于 2012-07-16 19:39:45
我以前也有过这个问题。ConnectTimeout属性仅适用于连接到数据库时发生的超时,而不适用于查询。
但是,CommandTimeout指定了应该等待查询返回的时间。我相信默认是30秒。重复检查MySql库的文档,但是对于SqlCommand,CommandTimeout以秒而不是毫秒为单位。
发布于 2014-09-02 23:11:44
您还可以尝试在连接字符串中添加“默认命令timeout=360”;例如
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;default command timeout=20;此选项可从Connector/NetVersion5.1.4中获得。
发布于 2012-07-16 18:13:31
如果你能向我们展示你的方法,我们可以帮助我们找到错误。
如果说历史(和历史)教会了我什么,那就是
"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);如果您还没有这样做,请尝试,并发布一些代码:)
https://stackoverflow.com/questions/11509817
复制相似问题