У меня есть приложение, которое создает базу данных по комнатам. Затем я перемещаю базу данных на сервер для заполнения. При обновлении или инициализации приложения загруженная база данных загружается приложением. Но когда я хочу использовать его по комнате, я получаю сообщение об ошибке:
Необходим переход от 2 к 1. Пожалуйста, предоставьте миграцию в
построитель или вызовите fallbackToDestructiveMigration в построителе в
В этом случае Room заново создаст все столы.
Я очистил всю папку сборки, затем я сделал все снова. Но я снова получаю ту же ошибку!
Где я получаю ошибку:
String SALE_DATABASE_NAME = "SaleDatabase.db";
SaleDatabase saleDatabase = Room.databaseBuilder(this,
SaleDatabase.class, SALE_DATABASE_NAME)
//.fallbackToDestructiveMigration()
.allowMainThreadQueries()
.build();
saleDatabase.getPathDao().getPaths(); //Getting error
Класс базы данных:
@Database(entities = {OrderEntity.class, OrderDetailEntity.class
, CardIndexDetailEntity.class, CardIndexEntity.class
, CategoryEntity.class, CodingEntity.class
, CustomerBasicEntity.class, CustomerBuyEntity.class
, CustomerChequeEntity.class, CustomerCreditEntity.class
, PathEntity.class, UnvisitedCustomerReasonEntity.class
, ProfileCategoryEntity.class, SubCategoryDetailEntity.class
, SubCategoryEntity.class, ReasonEntity.class}, version = 1)
public abstract class SaleDatabase extends RoomDatabase{
public abstract PathDao getPathDao();
@Override
protected SupportSQLiteOpenHelper createOpenHelper(DatabaseConfiguration config) {
return null;
}
@Override
protected InvalidationTracker createInvalidationTracker() {
return null;
}
}
Мой хеш-код в базе данных и классе SaleDatabase_Impl.java одинаков.
Итак, мои вопросы:
- Почему миграция 2 к 1 считается пониженной работой?
- Как я могу игнорировать версию, пока приложение не будет полностью построено
- Есть ли способ очистить и сбросить комнату, если я обновлю свою версию до 2?