RoomDatabase - Комната не может проверить проблему целостности данныхAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 RoomDatabase - Комната не может проверить проблему целостности данных

Сообщение Anonymous »

У меня есть исследования в Интернете, но я не могу найти какое -либо решение для следующей проблемы: < /p>
У меня есть приложение, которое использует базу данных комнаты. Версия комнаты = 2.6.1
После некоторого времени не используется или в неожиданных случаях приложение бросает следующее исключение: < /p>
Java.lang.illegalstateException: Комната не может проверить целостность данных. Похоже, вы изменили схему, но забыли обновить номер версии. Вы можете просто исправить это, увеличив номер версии. Ожидаемый идентификационный хэш: 33163C2D5EEE97B7482F9E26308BF995, найдено: null
Схема вообще не была изменена.
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
open class RoomOpenHelper(
configuration: DatabaseConfiguration,
delegate: Delegate,
identityHash: String,
legacyHash: String
) : SupportSQLiteOpenHelper.Callback(delegate.version) {
private var configuration: DatabaseConfiguration?
private val delegate: Delegate
private val identityHash: String

..................
..................
..................
..................

override fun onOpen(db: SupportSQLiteDatabase) {
super.onOpen(db)
checkIdentity(db)
delegate.onOpen(db)
// there might be too many configurations etc, just clear it.
configuration = null
}

private fun checkIdentity(db: SupportSQLiteDatabase) {
if (hasRoomMasterTable(db)) {
val identityHash: String? = db.query(
SimpleSQLiteQuery(RoomMasterTable.READ_QUERY)
).useCursor { cursor ->
if (cursor.moveToFirst()) {
cursor.getString(0)
} else {
null
}
}

if (this.identityHash != identityHash && this.legacyHash != identityHash) {
throw IllegalStateException(
"Room cannot verify the data integrity. Looks like" +
" you've changed schema but forgot to update the version number. You can" +
" simply fix this by increasing the version number. Expected identity" +
" hash: ${ this.identityHash }, found: $identityHash"
)
}
} else {
// No room_master_table, this might an a pre-populated DB, we must validate to see if
// its suitable for usage.
val result = delegate.onValidateSchema(db)
if (!result.isValid) {
throw IllegalStateException(
"Pre-packaged database has an invalid schema: ${result.expectedFoundMsg}"
)
}
delegate.onPostMigrate(db)
updateIdentity(db)
}
}

private fun updateIdentity(db: SupportSQLiteDatabase) {
createMasterTableIfNotExists(db)
db.execSQL(RoomMasterTable.createInsertQuery(identityHash))
}

private fun createMasterTableIfNotExists(db: SupportSQLiteDatabase) {
db.execSQL(RoomMasterTable.CREATE_QUERY)
}
< /code>
В базе данных на устройстве есть rap_master_table существует, но является пустой.
room пытается сравнить идентификацию_hash текущей схемы с идентификацией_hash, хранящейся в базе данных и не сбои. Если TRUE, он сравнивает идентификацию_HASH, а если нет, он пытается воссоздать таблицу с помощью Identity_hash
, поскольку в моем случае таблица существует, но она пуста, она бросает нелегальное организацию. < /p>
. Это происходит после того, как пользователь использует приложение и оставляет его на некоторое время. Мне не нравится такое решение, поэтому я хотел бы знать, что кто -то столкнулся с той же проблемой или есть обходной путь.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... rity-issue
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • База данных помещений IllegalStateException: комната не может проверить целостность данных после изменения схемы
    Anonymous » » в форуме Android
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Почему я не могу получить аннотацию @Database в RoomDatabase
    Гость » » в форуме Android
    0 Ответы
    18 Просмотры
    Последнее сообщение Гость
  • Использование RoomDatabase в моделях с несколькими видами
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Использование RoomDatabase в моделях с несколькими видами
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Использование RoomDatabase в моделях с несколькими видами
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»