簡體   English   中英

MySqlException:超時已過期 - 增加連接超時沒有效果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM