我在我的项目中使用DBAccess作为我的sqlite数据库的ORM。我有几个模型,如User,Worker等。当我对这些类的实例执行某些操作时,例如:
var query = User.query().whereWithFormat("login = %@ and password
= %@", withParameters: [login, password])
我在日志控制台中收到此错误:
"error >> no such table: _entityRevision"
虽然一切正常但我在获取此查询后得到了正确的DBResultSet。 那么,这有什么问题呢?
答案 0 :(得分: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);
}
由于 阿德里安