Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 房间升级数据库异常_Android_Android Room - Fatal编程技术网

Android 房间升级数据库异常

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

我最近更新了数据库版本,并为此编写了一个迁移块。而且我测试了很多次,没有问题。但我将更新推送到play store,然后我收到了一些关于db更新的崩溃报告:

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上的应用程序也出现了同样的错误。我的升级策略是破坏性的(即回退到破坏性迁移)。