Access中的Sqlite链接表再次给出#已删除的值

Access中的Sqlite链接表再次给出#已删除的值,sqlite,ms-access,indexing,Sqlite,Ms Access,Indexing,情况:MS Access(碰巧是2010年)使用SQLite ODBC驱动程序(0.997)链接到SQLite(3.x)数据库中的表 问题:所有行中所有列中的数据值显示为“#已删除” 解决方案:这是一篇“回答我自己的问题”的帖子,下面有一个解决方案 编辑:将解决方案移至答案部分。之前,我在stackoverflow中搜索了一个类似的问题(Access中的sqlite链接表给出了#已删除的值),但答案很好,在我的案例中不适用。所以我在这里添加了一些信息 这里解释了问题的一半:“#删除”链接ODBC

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

问题:所有行中所有列中的数据值显示为“#已删除”

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


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

之前,我在stackoverflow中搜索了一个类似的问题(Access中的sqlite链接表给出了#已删除的值),但答案很好,在我的案例中不适用。所以我在这里添加了一些信息

这里解释了问题的一半:“#删除”链接ODBC表的错误。”

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

如果您的SQLite表没有唯一的索引(或主键),那么Access将只允许对该表进行读取访问——您不能在Access中编辑该表的数据,但数据显示良好

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

如果您的PK/unique索引碰巧使用了文本字段,那么SQLite就可以了。但是,当您在Access中链接到它时,Access将显示#已删除的指示

事件链似乎是:

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

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


希望这对某人有所帮助。

刚刚发现了这个相关问题:不要把答案放在问题中。CL:好的,我的错误,可以。相关: