2

我在我的项目中使用 DBAccess 作为我的 sqlite 数据库的 ORM。我的模型很少,例如 User、Worker 等。当我对这些类的实例执行一些操作时,例如:

    var query = User.query().whereWithFormat("login = %@ and password
  = %@", withParameters: [login, password])

我在日志控制台中收到此错误:

    "error >> no such table: _entityRevision" 

尽管一切正常,并且在获取此查询后我得到了正确的 DBResultSet。那么,这有什么问题呢?

4

1 回答 1

1

这是一个内部表,用于在您更改属性名称和对象结构时跟踪对实体的升级。它是在我们创建一个新的 DBAccess 数据库时创建的,但是当您使用现有的数据库时,它不存在。

您可以手动创建表来停止错误吗?

CREATE TABLE IF NOT EXISTS _entityRevision (entityName TEXT,revision INTEGER);

但我们也会确保在软件的下一个版本中修复该问题。

但是,查看代码,每当打开一个数据库文件时,就会运行这段代码,所以这个表应该存在。在您的应用程序执行期间数据库是否被另一个文件换出?还是只读的?

if (dbHandle) {

      /* create the revision table */
      sqlite3_exec(dbHandle, "CREATE TABLE IF NOT EXISTS _schemaRevision (revision INTEGER);", nil, nil, nil);
      sqlite3_exec(dbHandle, "CREATE TABLE IF NOT EXISTS _entityRevision (entityName TEXT,revision INTEGER);", nil, nil, nil);

}

谢谢阿德里安

于 2015-09-03T06:33:02.763 回答