【发布时间】:2017-04-08 13:34:33
【问题描述】:
我只是检查了有关连接超时的堆栈溢出的其他帖子,但看起来每个人都使用它修复了它
com.CommandTimeout = int.MaxValue;
和
dbaccess.ServerAddress = "Server=mysql;Database=MyDB;Connect Timeout=2147483;Uid=username;Pwd=mypassword";
很遗憾,40 秒后我仍然收到此错误消息:
在操作完成之前超时时间已过或服务器没有响应。
您可以看一下这两个屏幕截图。
MySQL Workbench 工作正常,执行相同查询需要 48 秒。
我不能使用限制来减少获取的子集,因为我将信息集中在不同的表中。由于信息也存储在不同的mysql服务器中,因此无法使用存储过程。
我们将不胜感激任何反馈。
费尔南多
编辑:
这是代码。我发布了图像以显示执行时间,而不是错误消息。
public DataSet ExecuteQuery(string[] Query, TableMap[] TableMappings)
{
//Mysql vars
MySqlConnection con;
MySqlCommand com;
MySqlDataAdapter adapter;
DataSet ds;
con = new MySqlConnection();
con.ConnectionString = _serveraddress;
con.Open();
com = con.CreateCommand();
com.CommandType = System.Data.CommandType.Text;
foreach (string st in Query)
{
com.CommandText = com.CommandText + st;
}
com.CommandTimeout = int.MaxValue;
adapter = new MySqlDataAdapter(com.CommandText, con);
foreach (TableMap tm in TableMappings)
{
adapter.TableMappings.Add(tm.SourceTable, tm.TableSet);
}
ds = new DataSet();
adapter.Fill(ds);
return ds;
}
【问题讨论】:
-
请显示完整的代码,从实例化
dbaccess后面的内容开始,直到打开连接。 -
如果将
int.MaxValue更改为5000 会发生什么? -
@SimonPrice 同样的错误:(
-
@Seteve 对不起这张照片。我试图不显示错误消息,而是显示执行时间。
-
这不是你的代码。
dbaccess在您的编辑中不存在。