Access 中的 Sqlite 链接表再次给出 #deleted 值

Posted

技术标签:

【中文标题】Access 中的 Sqlite 链接表再次给出 #deleted 值【英文标题】:Sqlite linked tables in Access give #deleted values, again 【发布时间】:2014-04-03 12:04:12 【问题描述】:

情况:MS Access(大约是 2010 年)使用 SQLite ODBC 驱动程序 (0.997) 链接到 SQLite (3.x) 数据库中的表。

问题:所有行中所有列的数据值显示为“#Deleted”。

解决方案:这是一篇“回答我自己的问题”的帖子,下面有一个解决方案。

已编辑:将解决方案移至答案部分。

【问题讨论】:

刚发现这个相关问题:***.com/questions/19658747/… 不要把答案放在问题里。 CL:对,我的错,会的。 相关:***.com/questions/19658747/… 【参考方案1】:

早些时候,我在 *** 中进行了搜索,发现了一个类似的问题(Access 中的 sqlite 链接表给出了 #deleted 值),答案很好,但在我的情况下并不适用。所以我在这里添加一些信息。

这里解释了一半的问题:http://support.microsoft.com/kb/128809 '"#Deleted" 链接的 ODBC 表错误。' 上述链接在 2021 年 7 月不再可用。但是,您可能会在 https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-errors.html 中找到对“#DELETED# Access 报告的记录”的很好解释

这说明 Access (Jet) 希望表具有唯一索引,以便能够在必要时插入/更新表。

如果您的 SQLite 表没有唯一索引(或主键),则 Access 将只允许对该表进行读取访问——您无法在 Access 中编辑表的数据,但数据显示正常。

要使表可更新,您可以修改 SQLite 代码(或使用 SQLite 工具)以向表中添加索引。

如果您的 PK/唯一索引碰巧使用了 TEXT 字段,那么这对 SQLite 来说很好。但是,当您在 Access 中链接到它时,Access 将显示#Deleted 指示。

事件链似乎是:

Access/Jet 注意到唯一索引,并尝试使用它。但是,SQLite TEXT 字段是可变长度的,并且可能是 BLOB。这显然不满足 Access 对唯一索引字段的要求,因此需要 #Delete 指示。

为避免该问题,索引必须是 Access 将接受的 SQLite 字段类型。我不知道可接受的类型的完整列表,但 INTEGER 可以。

希望这对某人有所帮助。

【讨论】:

以上是关于Access 中的 Sqlite 链接表再次给出 #deleted 值的主要内容,如果未能解决你的问题,请参考以下文章

如果 Access 与 MySQL 数据库服务器断开连接,如何刷新链接表?

SQLite中的多对多链接表外键建模

使用带有 Azure 链接表的 Access 插入 SQL 失败

Python 中的链接 API 错误 - “Empty oauth2 access token”即使给出了访问令牌

在 Access 中更改链接表中的表名

为 Access 中的链接表选择 @@Identity 返回 0