与Sqlite元数据相关的持续错误条件

与Sqlite元数据相关的持续错误条件,sqlite,delphi,dbexpress,Sqlite,Delphi,Dbexpress,关于Sqlite数据库中的表,我遇到了一个非常令人费解的问题。 该表具有以下简单的DDL定义: CREATE TABLE [MATable2] ([ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [AName] VARCHAR(20), [AMemo] MEMO) 使用XE6、DBExpress和sqlite3.dll的v.3.8.5.0,我创建了一个项目 调查另一个SO q。该项目(32位目标)故意尽我所能做到最低限度,也就是说,我刚刚

关于Sqlite数据库中的表,我遇到了一个非常令人费解的问题。 该表具有以下简单的DDL定义:

CREATE TABLE [MATable2] ([ID] INTEGER  NOT NULL PRIMARY KEY AUTOINCREMENT,
  [AName] VARCHAR(20),  [AMemo] MEMO)
使用XE6、DBExpress和sqlite3.dll的v.3.8.5.0,我创建了一个项目 调查另一个SO q。该项目(32位目标)故意尽我所能做到最低限度,也就是说,我刚刚从组件调色板中拉出了一个SqlConnection, SqlQuery(只执行“从[MATable2]中选择*”)、DataSetProvider、CD、, DataSource、DBGrid和DBNavigator按从左到右的顺序连接起来。 代码同样是最低限度的,我不认为我需要显示它,因为我的 问题不在于代码本身,它工作得很好

我遇到的问题是:通常是在我做了一件事之后,时不时地 如果Sqlite中的服务器不仅仅是 dll)进入“错误状态”,在重新启动XE6 IDE和 重新启动机器。它通过SqlQuery.Open生成异常来显示自己 抱怨预期字段类型与实际字段类型不匹配,例如 对于ID字段,异常将报告它期望一个WideMemo字段,但收到的却是一个大的字段——这就好像SqlQuery接收到的表元数据中有一些东西被一关闭了一样

认为这种情况可能是DBX特有的,并且与Sqlite列有关 我创建了一个相当于FireDac的类型,它实际上是一个伪装得很薄的备注字段 项目,并获取错误条件。然后,条件清除, 看起来很神秘,通常是在我删除数据集组件之后+ t字段并替换它们

所以,我的问题是,有人知道错误原因会持续在哪里吗 这样它就可以在IDE重新启动和机器重新启动后生存?我的第一个想法是在DFM中,因为我已经说过它是如何自发清除的。接下来,我怀疑数据库本身,但它似乎完全是使用两个独立的Sqlite实用程序(Sqlite Expert和用于Firefox的Sqlite Manager插件)访问、查询和重新创建的。操作系统将磁盘报告为w/out错误。我在Ini文件和注册表中查找了可能是原因的持久化信息,但没有发现任何明显的信息