![](/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.