MySql 命令超时

Posted

技术标签:

【中文标题】MySql 命令超时【英文标题】:MySql CommandTimeout 【发布时间】:2013-09-30 17:19:12 【问题描述】:

我正在尝试通过以下代码模拟 mysql CommandTimeout 异常。 我有一个 3 秒的 CommandTimeout,我的查询大约需要 30 秒才能执行。 为什么这段代码不起作用?我有什么问题吗?

我的连接字符串中没有命令超时。

connectionString="server=localhost;logging=true;user id=*****;pwd=****database=shopdb;port=3306;persist security info=true;允许用户变量=false;允许零日期时间=真的”

请帮忙。

使用 (MySqlCommand cmd = new MySqlCommand("select * from order_line", new MySqlConnection("myConnectionString"))) cmd.CommandTimeout = 3; // 默认 30 秒 尝试 日期时间开始 = 日期时间。现在; cmd.Connection.Open(); 使用 (MySqlDataReader reader = cmd.ExecuteReader()) while (reader.Read()) DBFactory.CloseReader(阅读器); cmd.Connection.Close(); 日期时间结束 = 日期时间。现在; 时间跨度 ts = 结束 - 开始; Response.Write(ts.Seconds + "." + ts.Milliseconds); 捕捉(异常前) Response.Write(ex.Message); 最后 DBFactory.CloseConnection(cmd);

【问题讨论】:

你的连接字符串到底是什么? connectionString="server=localhost;logging=true;user id=*****;pwd=****database=shopdb;port=3306;persist security info=true;允许用户variables=false;允许零日期时间=true" 我建议你仔细阅读:dev.mysql.com/doc/refman/5.0/es/… 【参考方案1】:

您能否告诉我 order_line 表中有多少条记录,以便我们弄清楚附加了什么?通常,CommandTimeout 在针对上下文连接(在连接字符串中使用“context connection=true”打开的 SqlConnection)执行命令时无效。CommandTimeout 是累积超时(对于在调用期间读取的所有网络数据包)一种方法)用于命令执行或结果处理期间的所有网络读取。返回第一行后仍有可能超时,不包括用户处理时间,只包括网络读取时间。

例如,在 10 秒超时的情况下,如果读取需要两个网络数据包,那么它有 10 秒的时间来读取两个网络数据包。如果您再次调用 Read,它将有另外 10 秒的时间来读取它需要的任何数据。 (从 msdn 复制)。兄弟,你需要更多解释吗?

【讨论】:

如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review 我正在努力帮助他的兄弟@Flicker。为什么你告诉我这件事兄弟? 我认为这是一种误解。不用担心。

以上是关于MySql 命令超时的主要内容,如果未能解决你的问题,请参考以下文章

keepalived下,mysql连接超时

C3p0连接mysql,超时问题

MySQL - 超时配置参数

如何在 MySql 中对事务提交超时进行单元测试?

C#连接mysql数据库,怎么设置超时时间

如何防止大型 MySQL 导入的连接超时