我有一个运行时间很长的查询,大约需要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"; }
}
答案 0 :(得分:1)
需要像这样设置CommandTimeout
print(n % 2 , end='')