簡體   English   中英

從池中獲取連接之前經過的超時時間

[英]The timeout period elapsed prior to obtaining a connection from pool

我的作業代碼有問題。 我們必須使用更新的用戶來創建一些數據庫,但是這些錯誤和程序崩潰使我出錯了。這是完整的錯誤代碼,並且有代碼。

錯誤:MySql.Data.MySqlClient.MySqlException(0x80004005):錯誤連接:超時已過期。 從池中獲取連接之前已經過超時時間。 這可能是因為所有池化連接都在使用中,並且達到了最大池大小。

我嘗試使用query.CommandTimeout = 60; 但我認為它沒用,您怎么看?

MySqlConnection connect = new 
     MySqlConnection("Server=localhost;Database=Work;Uid=root;Pwd='1234';");
connect.Open();
MySqlCommand query = new MySqlCommand(@"UPDATE user  
        SET User_Name=@User_Name,User_BankBalance=@User_BankBalance,
        User_Password=@User_Password,LottoTimer=@LottoTimer 
        WHERE User_Name='" + Escape(u.Username) + "'", connect);
using (query)
{
    query.CommandType = System.Data.CommandType.Text;
    query.Parameters.AddWithValue("@User_Name", Escape(u.Username));
    query.Parameters.AddWithValue("@User_BankBalance", u.BankBalance);
    query.Parameters.AddWithValue("@User_Password", u.Password);
    query.Parameters.AddWithValue("@LottoTimer", u.LottoTimer);
    query.Dispose();
    query.Prepare();
    query.ExecuteNonQuery();
}
connect.Close();
return;

您的方法應如下所示:

        string query =
            @"UPDATE user SET"
            + " User_Name=@User_Name,"
            + " User_BankBalance=@User_BankBalance,"
            + " User_Password=@User_Password,"
            + " LottoTimer=@LottoTimer"
            + " WHERE User_Name='" + Escape(u.Username) + "'";
        using( var connect = new MySqlConnection("Server=localhost;Database=Work;Uid=root;Pwd='1234';"))
        using( var query = new MySqlCommand(query, connect))
        {
            connect.Open();
            query.CommandType = System.Data.CommandType.Text;
            query.Parameters.AddWithValue("@User_Name", Escape(u.Username));
            query.Parameters.AddWithValue("@User_BankBalance", u.BankBalance);
            query.Parameters.AddWithValue("@User_Password", u.Password);
            query.Parameters.AddWithValue("@LottoTimer", u.LottoTimer);
            query.Prepare();
            query.ExecuteNonQuery();
        }
        return;

放置MySqlConnection很重要,因此它可以再次用於池中。 您遇到的問題是池中使用了所有連接,並且它正在等待連接-直到超時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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