【问题标题】:Runtime exception from room in a project that is not using room未使用房间的项目中房间的运行时异常
【发布时间】:2018-07-21 03:38:24
【问题描述】:

我突然开始在应用启动时遇到此运行时异常,根本没有空间作为我的依赖项。

07-20 19:48:37.703 18737-18771/mypackage.x E/AndroidRuntime: FATAL EXCEPTION: pool-4-thread-1
    Process: mypackage, PID: 18737
    java.lang.IllegalStateException: A migration from 3 to 2 was required but not found. Please provide the necessary Migration path via RoomDatabase.Builder.addMigration(Migration ...) or allow for destructive migrations via one of the RoomDatabase.Builder.fallbackToDestructiveMigration* methods.
        at android.arch.persistence.room.RoomOpenHelper.onUpgrade(RoomOpenHelper.java:97)
        at android.arch.persistence.room.RoomOpenHelper.onDowngrade(RoomOpenHelper.java:109)
        at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onDowngrade(FrameworkSQLiteOpenHelper.java:144)
        at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:396)
        at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:298)
        at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:96)
        at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:54)
        at android.arch.persistence.room.RoomDatabase.compileStatement(RoomDatabase.java:244)
        at android.arch.persistence.room.SharedSQLiteStatement.createNewStatement(SharedSQLiteStatement.java:65)
        at android.arch.persistence.room.SharedSQLiteStatement.getStmt(SharedSQLiteStatement.java:72)
        at android.arch.persistence.room.SharedSQLiteStatement.acquire(SharedSQLiteStatement.java:87)
        at androidx.work.impl.model.WorkSpecDao_Impl.resetScheduledState(WorkSpecDao_Impl.java:337)
        at androidx.work.impl.WorkManagerImpl.rescheduleEligibleWork(WorkManagerImpl.java:514)
        at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:73)
        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)

以下是我从 Android 架构中获得的一些依赖项:

implementation "androidx.core:core-ktx:$ktx_version"
implementation "android.arch.paging:runtime:$paging_runtime"
implementation("android.arch.lifecycle:extensions:$android_arc_version") {
    force = true
}

implementation "android.arch.navigation:navigation-fragment-ktx:$navigation_version"
// use -ktx for Kotlin
implementation "android.arch.navigation:navigation-ui-ktx:$navigation_version"
implementation "android.arch.work:work-runtime-ktx:$work_version"

知道是什么原因造成的吗?

【问题讨论】:

    标签: android android-room android-jetpack


    【解决方案1】:

    原来android.arch.work:work 依赖于房间库,而我使用的是工作库的1.0.0-alpha03 版本。我想排除依赖,但我注意到工作组件有可用的更新,在尝试之后,它解决了这个问题。所以升级你的工作库来解决这个问题(此时更新的版本是1.0.0-alpha04

    【讨论】:

    • 您的回答旨在赚取更高的利率。我从 Room 的一个例外来到这里,迁移与库的版本无关。
    • @CoolMind 在问题的标题中我提到了“在一个不使用房间的项目中”,所以如果你在使用房间,那么你就在错误的地方。
    • 是的,同意。奇怪的是,这个异常出现在没有 Room 的应用程序中。顺便写了个迁移脚本,解决了一个问题。
    • @CoolMind 我正面临与您类似的问题。房间数据库迁移测试抛出此错误。你能指导我吗?提前致谢。
    • @shakunthalaMK,你停在哪里了?请参阅stackoverflow.com/questions/46769772/…medium.com/androiddevelopers/…。如果你愿意,我可以在这里添加答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多