Room 1.1.0版本.
迁移后的第一次运行时出现此错误.
如果我关闭应用程序并重新启动,它将运行良好.
ROOM: Cannot run invalIDation tracker. Is the db closed?java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed. at androID.database.sqlite.sqliteConnectionPool.throwIfClosedLocked(sqliteConnectionPool.java:1182) at androID.database.sqlite.sqliteConnectionPool.waitForConnection(sqliteConnectionPool.java:792) at androID.database.sqlite.sqliteConnectionPool.acquireConnection(sqliteConnectionPool.java:518)Caused By : sql(query) error or missing database. (no such table: room_table_modification_log (code 1): , while compiling: DELETE FROM proposals WHERE hotel_ID = ?)################################################################# at androID.database.sqlite.sqliteConnection.nativePrepareStatement(Native Method) at androID.database.sqlite.sqliteConnection.acquirePreparedStatement(sqliteConnection.java:1095) at androID.database.sqlite.sqliteConnection.prepare(sqliteConnection.java:660) at androID.database.sqlite.sqliteSession.prepare(sqliteSession.java:588) at androID.database.sqlite.sqliteProgram.<init>(sqliteProgram.java:59) at androID.database.sqlite.sqliteStatement.<init>(sqliteStatement.java:31) at androID.database.sqlite.sqliteDatabase.compileStatement(sqliteDatabase.java:1417) at androID.arch.persistence.db.framework.FrameworksqliteDatabase.compileStatement(FrameworksqliteDatabase.java:64) 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:77) at androID.arch.persistence.room.SharedsqliteStatement.acquire(SharedsqliteStatement.java:87) at com.hotellook.db.dao.FavoritesDao_Impl.removeProposals(FavoritesDao_Impl.java:723)
@R_301_6948@初始化代码如下所示(Dagger AppModule)
@ProvIDes@Singletonfun provIDeDataBase(app: Application): AppDatabase = Room.databaseBuilder(app, AppDatabase::class.java, DATABASE_name) .addMigrations(MIGRATION_1_2) .addMigrations(MIGRATION_2_3) .build()private companion object { const val DATABASE_name = "app.db" val MIGRATION_1_2 = object : Migration(1, 2) { overrIDe fun migrate(database: SupportsqliteDatabase) { database.execsql("ALTER table table1 ADD ColUMN column0 TEXT;") database.execsql("ALTER table table2 ADD ColUMN column0 TEXT;") } } val MIGRATION_2_3 = object : Migration(2, 3) { overrIDe fun migrate(database: SupportsqliteDatabase) { database.execsql("CREATE table table0 (column1 INTEGER NOT NulL, column2 TEXT NOT NulL, PRIMARY KEY(column1))") database.execsql("ALTER table table1 ADD ColUMN column1 TEXT;") database.execsql("ALTER table table1 ADD ColUMN column2 TEXT;") database.execsql("ALTER table table1 ADD ColUMN column3 REAL;") database.execsql("ALTER table table2 ADD ColUMN column1 TEXT;") database.execsql("ALTER table table2 ADD ColUMN column2 REAL;") database.execsql("ALTER table table3 ADD ColUMN column1 INTEGER DEFAulT 0;") database.execsql("ALTER table table3 ADD ColUMN column2 TEXT;") } }
该应用程序从版本2升级到版本3.
我该如何解决?
解决方法:
将版本升级到1.1.1-rc1,再也不会发生由Google自己的代码引起的这种无意义的错误,我已经在许多设备上测试了相同的场景.
另请参阅我的question/answer here
总结以上是内存溢出为你收集整理的android-房间迁移:“没有这样的表:room_table_modification_log”全部内容,希望文章能够帮你解决android-房间迁移:“没有这样的表:room_table_modification_log”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)