У меня есть приложение с файлом базы данных Sqlite версии 1. Создано с использованием класса SqliteOpenHelper .
Теперь я хочу перенести старую базу данных в базу данных комнаты.
Ниже мой код, и он, кажется, не работает для меня.
@ApplicationScope
@Provides
AppDatabase provideDatabase(Application application) {
String dbPath = "";
if (application.getExternalFilesDir(null) != null) {
dbPath = application.getExternalFilesDir(null).getPath();
} else {
dbPath = application.getFilesDir().getPath();
}
return Room.databaseBuilder(application, AppDatabase.class, dbPath + File.separator + DB_NAME)
.addMigrations(RoomDatabaseMigrationProvider.MIGRATION_1_2)
.build();
}
Выше код не вызывает RoomDatabaseMigrationProvider.MIGRATION_1_2 . Я также попытался добавить RoomDatabase.Callback . Он возвращает 0 в void onCreate(@NonNull SupportSQLiteDatabase db)
, а не в версии 1, а в методе void onOpen(@NonNull SupportSQLiteDatabase db)
возвращает версию 2.
Ниже мой AppDatabase.java и класс миграции
@Database(entities = {Calendar.class, Contest.class},
version = 2, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
public abstract ContestDao provideContestDao();
public abstract CalanderDao provideCalanderDao();
}
public static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(@NonNull final SupportSQLiteDatabase database) {
Log.d("##### Migration", "started....");
migrateDatabase(database);
Log.d("##### Migration", "completed....");
}
};