我在资产文件夹中有一个 .db 文件。我的 RoomDatabase 类如下。我将应用程序安装到我的设备上。然后我在下面的类中更改了 version = 2,并使我的预填充数据库版本为 2。然后我重命名了表中的一列,以便更改架构。然后我再次安装了该应用程序。和繁荣!Room 给我以下错误: Room 无法验证数据完整性。看起来您已更改架构但忘记更新版本号。您可以通过增加版本号来解决此问题。
@Database(entities = [Word::class], version = 1, exportSchema = false)
abstract class WordRoomDatabase : RoomDatabase() {
abstract fun wordDao(): WordDao
companion object {
@Volatile
private var INSTANCE: WordRoomDatabase? = null
fun getDatabase(context: Context): WordRoomDatabase =
INSTANCE ?: synchronized(this) {
INSTANCE ?: buildDatabase(context).also { INSTANCE = it }
}
private fun buildDatabase(ctx: Context): WordRoomDatabase {
val passphrase: ByteArray = SQLiteDatabase.getBytes("my password".toCharArray())
val factory = SupportFactory(passphrase)
return Room.databaseBuilder(ctx.applicationContext, WordRoomDatabase::class.java, "word_database2.db")
.openHelperFactory(factory)
.createFromAsset("word_database.db")
.fallbackToDestructiveMigration()
.build()
}
}
}
在此之后,我完全删除了我的应用程序。制作预填充的数据库版本和@Database 版本 1。我在 AndroidManifest.xml 中将 allowBackup 设为 false。所以我的设备中不存在数据库。但是当我将应用程序安装到设备时,我仍然面临同样的错误。这是什么胡说八道的错误。我该如何解决?