为什么我的C#/ MySQL连接超时设置被忽略?

时间:2020-05-10 11:19:11

标签: c# mysql database

我有一个运行时间很长的查询,大约需要1分钟才能从MySQL普通客户端完成。

但是,当我在C#应用程序中运行它时,尽管在连接字符串中将其设置为240秒,但在30秒后仍会出现标准的MySQL连接超时错误。

还有我找不到的另一个超时设置吗?

错误消息

异常:“命令执行期间遇到致命错误。”

InnerException:“从流读取失败。”

InnerException:“无法从传输连接中读取数据:连接尝试失败,因为一段时间后连接方未正确响应,或者连接建立失败,因为连接的主机未响应。”

代码

public static string GetMySQLconnectionString()
{
    MySqlConnectionStringBuilder conn_string = new MySqlConnectionStringBuilder();

    conn_string.Server             = "127.0.0.1";
    conn_string.Port               = 4302;
    conn_string.UserID             = "root";
    conn_string.Password           = "";
    conn_string.Database           = "my_database";
    conn_string.CharacterSet       = "utf8";
    conn_string.SslMode            = MySqlSslMode.None;
    conn_string.ConnectionTimeout  = 240;

    return conn_string.ToString();
}

internal static string getTotalSitesThatStillNeedDNSChecking()
{
    try
    {
        using (MySql.Data.MySqlClient.MySqlConnection dbConnUpdate = new MySql.Data.MySqlClient.MySqlConnection(GetMySQLconnectionString()))
        {
            dbConnUpdate.Open();
            MySqlCommand command = dbConnUpdate.CreateCommand();
            command.CommandText = "SELECT count(*) as counter FROM all_domains WHERE last_dns_check IS NULL";
            MySqlDataReader reader = command.ExecuteReader();

            if (!reader.HasRows) return "0";

            reader.Read();

            return (string)reader["counter"].ToString();
        }
    }
    catch (Exception ex) { Logger.AddError("error - ", ex, "grand-total-stat-calculator"); return "0"; }
}

1 个答案:

答案 0 :(得分:1)

需要像这样设置CommandTimeout

print(n % 2 , end='')
相关问题