【问题标题】:MySQL Stored Procedure Times Out When Called From C#从 C# 调用 MySQL 存储过程超时
【发布时间】:2011-03-02 04:53:47
【问题描述】:

SP_A 是一个存储过程,它调用 SP_B,然后执行 SELECT,然后更新 SP_B 刚刚更新的相同记录/列。 SP_A 在 SELECT 和 UPDATE 语句周围有一个 TRANSACTION,后跟一个 COMMIT。

现在,当我从 MySQL 命令提示符调用 SP_A 时,一切正常。但是,当我从 C# 调用它时,它每次都会超时。

奇怪的是,如果我更改 SP_A 使其不调用 SP_B 并从 C# 代码分别调用 SP_BSP_A,它可以工作。这是为什么呢?

我仍在努力确定到底是什么问题。可能是:

  • 您不能调用一个调用另一个 SP 的 SP
  • 您不能调用一个 SP 来调用另一个更新与被调用方更新相同记录的 SP
  • 当涉及交易时,您不能在上面这样做

请记住,该问题仅在使用 MySqlCommand 从 C# 运行时出现



注意:
MySql.Data v2.0.50727
MySQL 连接器网络 6.2.2
MySQL 的 ADO.Net 驱动程序
.NET 框架 4

【问题讨论】:

  • MySql 命令提示符需要多长时间?如果需要一段时间(>30 秒),那么来自 ADO.Net 的默认命令超时将启动。

标签: c# mysql stored-procedures transactions


【解决方案1】:

听起来CommandTimeout 是问题 -> 每当发生“长”查询时,.NET 连接器都会超时。增加CommandTimeout 阈值应该允许查询/过程工作。

注意:超时以秒为单位。

【讨论】:

  • 查询根本不需要很长时间来执行。不到一秒
猜你喜欢
  • 2020-04-18
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多