Android 房间:在模拟器上崩溃

Android 房间:在模拟器上崩溃,android,kotlin,android-room,Android,Kotlin,Android Room,我想为pb添加值,因为将pb_值包含到实体中,所以应用程序崩溃。我是学习室的新手,我不确定如何将额外的项目纳入数据库 E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_0 java.lang.RuntimeException: Exception while computing database live data. at androidx.room.RoomTrackingLiveData$1.run(RoomTracki

我想为pb添加值,因为将pb_值包含到实体中,所以应用程序崩溃。我是学习室的新手,我不确定如何将额外的项目纳入数据库

E/AndroidRuntime: FATAL EXCEPTION: arch_disk_io_0

    java.lang.RuntimeException: Exception while computing database live data.
        at androidx.room.RoomTrackingLiveData$1.run(RoomTrackingLiveData.java:92)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: 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.
        at androidx.room.RoomOpenHelper.checkIdentity(RoomOpenHelper.java:139)
        at androidx.room.RoomOpenHelper.onOpen(RoomOpenHelper.java:119)
        at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen(FrameworkSQLiteOpenHelper.java:142)
        at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:409)
        at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:298)
        at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:92)
        at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:53)
        at androidx.room.RoomDatabase.inTransaction(RoomDatabase.java:452)
        at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.java:275)
        at androidx.room.RoomDatabase.query(RoomDatabase.java:304)

在我看来,您已经更改了数据库(即添加了Pb),但尚未编写迁移,也未更改数据库版本号以显示这些数据库更改。我已经处理过好几次这样的撞车事件,这对我来说一直都很重要。我一直在用Java工作,所以我还不能真正告诉你如何在Kotlin中使用它——虽然我希望很快就能做到这一点,但下面是Android开发者网站上的指南


这非常简单,尽管这是一个真正的麻烦,因为Room还不能编写自己的迁移。如果我没记错的话,很快就会有一个版本被提出或正在为Room开发,它将解决这个问题。

使用Logcat检查与崩溃相关的堆栈跟踪:如果您不知道如何解决问题,请编辑您的问题并提供完整的堆栈跟踪。非常感谢。我将看一看迁移。我不熟悉编码,所以有很多东西需要学习,但希望这将有助于修复它。我已经包括了迁移,但不幸的是没有修复它。您是否增加了AppDatabase和/或任何相关数据库代码文件中的版本号?是的,我也这样做了。您是否有可能发布所有相关代码以更好地进行故障排除?另外,若我不能在这里帮助你们,而房间里的其他人并没有比我更有知识,你们可能会想试试;我知道至少有几个人愿意解决房间问题,即使他们没有太多的经验。
@Entity(tableName = "pb_table")
data class Pb(@PrimaryKey
              val pb: String,
              val pb_value: Double
              )
@Dao
interface PbDao {

    @Query("SELECT * from pb_table ORDER BY pb ASC")
    fun getListPbs(): LiveData<List<Pb>>


    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insert(pb: Pb)


    @Query("DELETE FROM pb_table")
    suspend fun deleteAll()