情况:MS Access(恰好是 2010 年)使用 SQLite ODBC 驱动程序 (0.997) 链接到 SQLite (3.x) 数据库中的表。
问题:所有行中所有列中的数据值显示为“#Deleted”。
解决方案:这是一个“回答我自己的问题”类型的帖子,下面有一个解决方案。
编辑:将解决方案移至答案部分。
早些时候,我在 stackoverflow 中搜索,发现了一个类似的问题(Access 中的 sqlite 链接表给出 #deleted 值),有一个很好的答案,但事实证明在我的情况下不适用。所以我在这里添加一些信息。
问题的一半已经解释如下:http://support.microsoft.com/kb/128809 http://support.microsoft.com/kb/128809“链接的 ODBC 表出现“#Deleted”错误。”
上述链接在 2021 年 7 月不再可用。不过,您可能会在以下位置找到“#DELETED# Records Reported by Access”的详细解释:https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-errors.html https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-errors.html
这解释了 Access (Jet) 希望表具有唯一索引,以便能够在必要时插入/更新表。
如果您的 SQLite 表没有唯一索引(或主键),则 Access 将只允许对该表进行读访问 - 您无法在 Access 中编辑表的数据,但数据显示正常。
为了使表可更新,您可以修改 SQLite 代码(或使用 SQLite 工具)以向表添加索引。
如果您的 PK/唯一索引碰巧使用 TEXT 字段,那么这对于 SQLite 来说没问题。但是,当您在 Access 中链接到它时,Access 将显示 #Deleted 指示。
事件链似乎是:
Access/Jet 注意到唯一索引,并尝试使用它。然而,SQLite TEXT 字段是可变长度的,并且可能是 BLOB。这显然不满足 Access 对唯一索引字段的要求,因此 #Delete 指示。
为了避免该问题,索引必须是 Access 可接受的 SQLite 字段类型。我不知道可接受的类型的完整列表,但 INTEGER 有效。
希望这对某人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)