【问题标题】:Unhandled Exception: MySql.Data.MySqlClient.MySqlException: Duplicate entry 'CC2-2012-04-10-201205' for key 'PRIMARY'未处理的异常:MySql.Data.MySqlClient.MySqlException:密钥“PRIMARY”的重复条目“CC2-2012-04-10-201205”
【发布时间】:2012-05-01 10:47:17
【问题描述】:

我们有一个 C# 应用程序在过去 4 年中一直在三台机器上运行,其中 2 台运行 Mono,1 台成功运行 Windows。

最近,我们在修复时遇到了崩溃并更新了 Windows 机器。本机MySql是5.5.16

发布更新后,应用程序现在在标题“未处理的异常:MySql.Data.MySqlClient.MySqlException: Duplicate entry 'CC2-2012-04-10-201205' for key 'PRIMARY'”中抛出错误

  • 没有一个字段是自动递增的
  • 我们正在使用 DbDataAdapter
  • sql 语句是 UPDATE
  • 所有服务器的所有索引、表结构、权限等似乎都相同
  • 表上没有触发器
  • 我们一遍又一遍地删除和修复表和索引,但无济于事
  • 我们尝试过 MyIASM 和 InnoDB(我们最初使用 InnoDB)

我不知道更新语句如何因重复键而失败,关于我发现的最接近的解决方案是很多很多版本之前的 MySql 错误: http://bugs.mysql.com/bug.php?id=27650 但这显然是多年前修复的。

任何人有什么想法可以让我看看下一步吗?

【问题讨论】:

  • 更新语句如何因重复键而失败? insert into T id,val values (1,1), (2,2) 然后 update T set id=2 where id=1,将 T.id 作为 pkey。
  • 如果我理解正确,该应用程序仍然可以在 2 台装有旧版本 MySQL 的 Mono 机器上按预期运行。您提出问题的方式表明您认为升级是罪魁祸首。是否有机会在 Windows 机器上回滚 MySQL 升级;或者只升级其中一台 Mono 机器,看看是否可以在那里重现问题?
  • 我已经要求有权访问机器的人尝试回滚。我怀疑 SQL 的版本实际上有一个错误,否则其他人会看到它......很可能我们在设置上搞砸了一些东西,但我想不出是什么

标签: c# mysql exception


【解决方案1】:

问题原来是 MySQL 的 ADO.NET 驱动程序(连接器/NET)和 MySQL 服务器版本之间的版本不匹配。真的很明显。

我们使用的 ADO 驱动程序原来是一个相当旧的版本,同时肯定发生了一些重大变化。

只需升级 mysql.data.dll 即可解决所有问题

编辑:确认,我们使用的是非常旧的 MySql.Data ADO.NET 驱动程序版本 1.0.10.1 这适用于 MySql 服务器 5.1.53 及更低版本。 (这是我们的代码仍然可以工作的最高服务器版本)

一旦我们升级到 MySql 服务器版本 5.5.24,应用程序都开始失败,DataAdapter 除外,出现重复记录(没有重复记录)

【讨论】:

猜你喜欢
  • 2020-09-13
  • 1970-01-01
  • 2019-10-16
  • 2022-06-26
  • 2018-10-16
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
相关资源
最近更新 更多