Android 房间升级数据库异常
我最近更新了数据库版本,并为此编写了一个迁移块。而且我测试了很多次,没有问题。但我将更新推送到play store,然后我收到了一些关于db更新的崩溃报告:Android 房间升级数据库异常,android,android-room,Android,Android Room,我最近更新了数据库版本,并为此编写了一个迁移块。而且我测试了很多次,没有问题。但我将更新推送到play store,然后我收到了一些关于db更新的崩溃报告: java.lang.RuntimeException: at androidx.room.RoomTrackingLiveData$1.run (RoomTrackingLiveData.java:92) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoo
java.lang.RuntimeException:
at androidx.room.RoomTrackingLiveData$1.run (RoomTrackingLiveData.java:92)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
at java.lang.Thread.run (Thread.java:764)
at .Caused
at androidx.room.RoomOpenHelper.onUpgrade (RoomOpenHelper.java:103)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onUpgrade (FrameworkSQLiteOpenHelper.java:124)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:338)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:238)
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:476)
at androidx.room.RoomDatabase.assertNotSuspendingTransaction (RoomDatabase.java:281)
at androidx.room.RoomDatabase.query (RoomDatabase.java:324)
at androidx.room.util.DBUtil.query (DBUtil.java:83)
at com.impact.ribony.persistance.UserDao_Impl$25.call (UserDao_Impl.java:965)
at com.impact.ribony.persistance.UserDao_Impl$25.call (UserDao_Impl.java:962)
at androidx.room.RoomTrackingLiveData$1.run (RoomTrackingLiveData.java:90)
没有错误消息,因此我无法解决问题
这是我的迁移块:
database.execSQL("ALTER TABLE conversations ADD lastMessageLocalTime INTEGER");
database.execSQL("UPDATE conversations SET lastMessageLocalTime = lastMessageTime");
另外,lastMessageTime
字段是整数
有什么问题吗?我想您只是在“添加”之后缺少了“列”
database.execSQL("ALTER TABLE conversations ADD COLUMN lastMessageLocalTime INTEGER");
我认为您只是在“添加”之后缺少了“列”
database.execSQL("ALTER TABLE conversations ADD COLUMN lastMessageLocalTime INTEGER");
嗯,我在模拟器上的测试是如何通过的?好问题。您是否根据Room文档进行了迁移单元测试?没有,我只是在不同的模拟器和android版本上进行了测试您是如何在模拟器上测试迁移的?通过adb安装新版本?不,我使用Genymotion作为仿真器,它支持拖放apk文件。嗯,我在仿真器上的测试是如何通过的?好问题。您是否根据Room文档进行了迁移单元测试?没有,我只是在不同的模拟器和android版本上进行了测试您是如何在模拟器上测试迁移的?通过adb安装较新版本?不,我使用Genymotion作为模拟器,它支持拖放apk文件。我在play store上的应用程序遇到了相同的错误。我的升级策略是破坏性的(即回退到破坏性迁移)。我在play store上的应用程序也出现了同样的错误。我的升级策略是破坏性的(即回退到破坏性迁移)。