Hit*_*ahu 3 sqlite android android-asynctask android-room
我有一个使用SQLite数据库的应用程序,我试图SQLite用Android Room API.我创建的 DAO 类、实体类和 DB替换 Android ,但是在Async任务中执行数据库查询时出现以下错误:
引起:java.lang.IllegalStateException:需要从 3 迁移到 1。请在构建器中提供迁移或在构建器中调用 fallbackToDestructiveMigration 在这种情况下 Room 将重新创建所有表。在 android.arch.persistence.room.RoomOpenHelper.onUpgrade(RoomOpenHelper.java:82) 在 android.arch.persistence.room.RoomOpenHelper.onDowngrade(RoomOpenHelper.java:94) 在 android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper $OpenHelper.onDowngrade(FrameworkSQLiteOpenHelper.java:128) 在 android.database.sqlite.SQLiteOpenHelper。
我无法理解我错过了什么,任何帮助将不胜感激。
您正在尝试从 SQLite db 版本 3 移动到 Room db 版本 1。确保 ROOM 使用相同的数据库和版本控制(它只是 SQLite 上的抽象层),您的房间不知道如何管理从版本 3 到 1 .
您应该将 Room 中的版本增加到 4 并指定空迁移:
static final Migration MIGRATION_3_4 = new Migration(3, 4) {
@Override
public void migrate(SupportSQLiteDatabase database) {
// Since we didn't alter the table, there's nothing else to do here.
}
};
Run Code Online (Sandbox Code Playgroud)
将其添加到房间:
database = Room.databaseBuilder(context.getApplicationContext(),
UsersDatabase.class, "Sample.db")
.addMigrations(MIGRATION_3_4)
.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2517 次 |
| 最近记录: |