【发布时间】: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_B 和 SP_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