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 数据库服务器断开连接,如何刷新链接表?
使用带有 Azure 链接表的 Access 插入 SQL 失败