android-房间迁移:“没有这样的表:room_table_modification_log”

android-房间迁移:“没有这样的表:room_table_modification_log”,第1张

概述Room1.1.0版本.迁移后的第一次运行时出现此错误.如果我关闭应用程序并重新启动,它将运行良好.ROOM:Cannotruninvalidationtracker.Isthedbclosed?java.lang.IllegalStateException:Cannotperformthisoperationbecausetheconnectionpoolhasbeenclosed.

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”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存