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 命令超时的主要内容,如果未能解决你的问题,请参考以下文章