Что означает этот журнал в dbaccess(framework для ios) "ошибка >> нет такой таблицы: _entityRevision"?
Я использую DBAccess в моем проекте в качестве ORM для моей базы данных sqlite. У меня есть несколько моделей, таких как Пользователь, Работник и т. Д. Когда я выполняю некоторые действия с экземплярами этих классов, например:
var query = User.query().whereWithFormat("login = %@ and password
= %@", withParameters: [login, password])
Я получаю эту ошибку в консоли журнала:
"error >> no such table: _entityRevision"
Хотя все работает нормально, и я получаю правильный DBResultSet после получения этого запроса. Итак, что не так с этим?
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);
}
Спасибо Адриан