写入冲突消息突然开始出现在 ODBC 链接表中

Posted

技术标签:

【中文标题】写入冲突消息突然开始出现在 ODBC 链接表中【英文标题】:Write Conflict messages suddenly start happening in ODBC linked tables 【发布时间】:2010-07-14 17:53:15 【问题描述】:

我有一个 mysql 数据库,用于跟踪我们的项目并推动我们的网站显示他们的信息。为了便于更新数据库,我设置了一个使用 ODBC 连接 (MySQL ODBC 5.1) 来编辑数据的访问数据库。在过去的几个月里,它一直运行良好,没有出现任何问题。

但是,昨晚的用户(2 个,共 3 个)遇到了写入冲突错误。用户只能将更改复制到剪贴板或删除更改。因此,考虑到 Access 数据库有问题,我创建了一个新的 access 数据库,通过 ODBC 连接链接表,但问题仍然存在。我还删除并重新创建了 ODBC 连接,但没有效果。

那么我从这里去哪里呢?是什么导致了这个问题现在突然出现,而不是我几个月前设置的时候?

在上周(+5 天)内,数据库服务器、数据库或访问数据库没有任何变化。 我们已确保只有一个 Access 实例试图影响数据库。 所有表都有一个 PK 和一个时间戳列。 我们没有使用任何表单,只是使用 Table 界面。 服务器尚未更新,也没有 ODBC 连接。 我们正在使用 Access 2007 当我们尝试更新行时,服务器的错误日志中没有显示任何内容。

【问题讨论】:

前端Access应用最近有没有改过?还是人们开始使用该应用程序中尚未经过测试的部分?在 Access 中,一个常见的错误是编辑绑定表单中的表,然后尝试使用 SQL 更新相同的数据。 其他要检查的事项:MySQL 的版本是否发生了变化、Access 的版本、工作站的操作系统等。用户是否意外启动了多个 Access 应用程序实例(常见原因这个问题在我的不太优秀的客户中)? 最后,您的所有数据表中是否都有 PK 和时间戳字段,并且这两个字段都包含在所有绑定的可编辑表单后面的记录源中吗? PK 和时间戳呢? 是的,有PK和时间戳列。 【参考方案1】:

一般来说,从 Access 中使用的所有 ODBC 数据库都需要在所有表和其中的时间戳字段中具有 PK,每次更改记录时都会更新这些 PK。 Access 在绑定表单中使用它来处理绑定数据的刷新,而 Jet 在选择如何告诉 ODBC 数据库更新什么时使用它们。

您也许可以在没有 PK 和时间戳的情况下使用某些表格,但我发现最好确保所有表格都有它们,这样您就不会遇到问题(我从来没有当然有任何没有PK的表)。y

【讨论】:

除了每个表上的 PK 外,您还需要确保“位”字段具有默认值。 Access 无法处理 Null 布尔值。 非常感谢大卫!添加时间戳救了我的命。女士 Access 肯定是一个挑剔的数据库……如果没有你的帖子,我不确定我是否会解决这个问题! Access 是否自动检测时间戳列并在其 ODBC 更新过程中使用它?【参考方案2】:

确保 BIT 列具有非 NULL 的默认值。任何将 BIT 列设置为 NULL 的记录都可能出现写入冲突错误。

【讨论】:

以上是关于写入冲突消息突然开始出现在 ODBC 链接表中的主要内容,如果未能解决你的问题,请参考以下文章

删除/编辑 MySQL ODBC 链接表中的行导致 MS Access 出错

链接表时不出现系统 ODBC

带有/在字段名称中的 ODBC 链接数据库

ODBC 链接表未显示几分之一秒

Access使用链接表写入冲突问题

使 ODBC 链接访问表对用户可用