提交期间的MySQL超时

时间:2010-10-28 09:46:56

标签: .net mysql commit

我们遇到了MySQL的神秘网络问题。简单的更新查询(使用索引更新单行)通常立即运行,然后有时(假设1000次中的1次)因超时而失败。与简单的插入查询相同。数据库没有重载。 我们怀疑是网络问题并且正在寻找解决方案,所以如果有人遇到过这类问题,我肯定会想到这个问题。

现在到了重点。更糟糕的是,插入查询在事务提交期间失败(我们几乎没有类似的查询,但即使在最简单的情况下也会发生这种情况 - 只需插入单个表,没有锁,没有任何内容)。当它发生时,transaction.Commit抛出异常。我们捕获它并假设事务已回滚并再次重试插入数据。

结果是两行在表中具有相同的数据。如果提交失败,可能会有哪些假设?是否插入了行?这是MySql Connector / Net中的行为错误还是设计错误。任何建议(除了手动检查数据是否在表中)?

提前致谢。 茨尔

P.S。 我将此相同的消息发布到MySQL .NET连接器论坛。如果这困扰任何人,我道歉,但我变得绝望。 ○: - )

1 个答案:

答案 0 :(得分:0)

如果提交因网络错误而失败,则无法进行任何假设。我知道很难对它进行编程,但实际上是这样;)增加命令超时可能会有所帮助。但同样,如果在事务更改在数据库中持久化之后连接丢失,但客户端没有从服务器收到确认,则事务的状态是未定义的。