情况:MS Access(恰好是2010年)使用SQLite ODBC驱动程序(0.997)链接到SQLite(3.x)数据库中的表。
问题:所有行中所有列中的数据值显示为“#Deleted”。
解决方案:这是一个“回答我自己的问题”的帖子,下面有一个解决方案。
已编辑:将解决方案移至答案部分。
答案 0 :(得分:5)
之前,我在stackoverflow中搜索过,发现了一个类似的问题(Access中的sqlite链接表给出了#deleted值),并给出了一个很好的答案,结果证明在我的情况下是不适用的。所以我在这里添加一些信息。
此处解释了一半问题:链接ODBC表的http://support.microsoft.com/kb/128809'“#Deleted”错误。'
这解释了Access(Jet)希望表具有唯一索引,以便能够在必要时插入/更新表。
如果您的SQLite表没有唯一索引(或主键),则Access将只允许对表的读访问 - 您无法在Access中编辑表的数据,但数据显示正常。 / p>
要使表更新,您可以修改SQLite代码(或使用SQLite工具)向表中添加索引。
如果您的PK /唯一索引碰巧使用了TEXT字段,那对SQLite来说就没那么了。但是,当您在Access中链接到它时,Access将显示#Deleted指示。
事件链似乎是:
Access / Jet会注意到唯一索引,并尝试使用它。但是,SQLite TEXT字段是可变长度的,可能是BLOB。这显然不符合Access对唯一索引字段的要求,因此#Delete指示。
要避免该问题,索引必须是Access将接受的SQLite字段类型。我不知道可接受的完整类型列表,但INTEGER可以工作。
希望这有助于某人。