Android Room数据库异常: Room cannot verify the data integrity.

2024-01-31 13:12

本文主要是介绍Android Room数据库异常: Room cannot verify the data integrity.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、前言
  • 二、错误信息如下
  • 三、参考链接

一、前言

在Room数据库结构变动的情况下,如果没有进行Room数据库升级迁移,则会报错Room cannot verify the data integrity.。在实际开发过程中,数据库结构会经常变化,直到发版。一般来说卸载即可重新安装,但是有时候即使卸载了再安装依然会出现这个错误。这时候通常重启设备再重新安装即可,然而
再后面即使数据库没有更改多次安装还是有概率出现,一旦出现,只能重启。查阅多种资料,最终发现通过禁用备份功能可以解决该问题。猜测是备份功能会自动把之前旧的数据库版本更新下来然后与当前新版本数据库产生了冲突

<applicationandroid:allowBackup="false"tools:replace="android:allowBackup">

二、错误信息如下

01-29 11:05:00.595 17133 17133 E AndroidRuntime: FATAL EXCEPTION: main
01-29 11:05:00.595 17133 17133 E AndroidRuntime: java.lang.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.
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at androidx.room.RoomOpenHelper.checkIdentity(RoomOpenHelper.java:55)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at androidx.room.RoomOpenHelper.onOpen(RoomOpenHelper.java:4)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen(FrameworkSQLiteOpenHelper.java:11)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:447)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:332)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:5)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:5)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at androidx.room.RoomDatabase.inTransaction(RoomDatabase.java:3)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.java:1)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invokeSuspend(Merge.kt:49)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invoke(Merge.kt:2)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invoke(Merge.kt:1)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invokeSuspend(Merge.kt:35)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invoke(Merge.kt:2)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invoke(Merge.kt:1)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:23)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.f.c(Unknown Source:35)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1.emit(Merge.kt:109)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.flow.p1.m(SharedFlow.kt:200)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend(SharedFlow.kt:13)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:9)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.o0.run(DispatchedTask.kt:124)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.internal.g$a.run(LimitedDispatcher.kt:4)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at a8.i.run(Tasks.kt:3)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	at kotlinx.coroutines.scheduling.CoroutineScheduler$b.run(CoroutineScheduler.kt:101)
01-29 11:05:00.595 17133 17133 E AndroidRuntime: 	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [z1{Cancelling}@d556480, Dispatchers.Main]

三、参考链接

  1. 该链接记录了Room数据库的自身漏洞
    https://issuetracker.google.com/issues/221101259
  2. 该链接记录了Room数据库的自身漏洞
    https://github.com/android/codelab-android-workmanager/issues/283
  3. 该链接记录了一些解决room数据库版本冲突的方案
    https://copyprogramming.com/howto/room-cannot-verify-the-data-integrity-in-android
  4. 解决:room无论如何怎么修改数据库版本都报错java.lang.IllegalStateException: Room cannot verify the data integrity
    https://blog.csdn.net/qq_41888672/article/details/127162613

这篇关于Android Room数据库异常: Room cannot verify the data integrity.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/663874

相关文章

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

usb接口驱动异常问题常用解决方案

《usb接口驱动异常问题常用解决方案》当遇到USB接口驱动异常时,可以通过多种方法来解决,其中主要就包括重装USB控制器、禁用USB选择性暂停设置、更新或安装新的主板驱动等... usb接口驱动异常怎么办,USB接口驱动异常是常见问题,通常由驱动损坏、系统更新冲突、硬件故障或电源管理设置导致。以下是常用解决