Android - Комната - какой-то пользователь после миграции без данных - PullRequest
0 голосов
/ 16 апреля 2020

У меня проблема с моим приложением в Java. После выхода новой версии приложения некоторые пользователи присылают мне информацию, в которой нет данных. Но в моем справочном мобильном (где у меня есть только версия из Google Play) у меня есть данные истории. Миграция была связана с изменением типа данных (INT -> REAL) в комнате DB.

Так что я не знаю, как выяснить, где проблема - если все еще дата в БД, но только не достижима, или если данные в БД потерял.

В firebase были некоторые ошибки, когда мы забыли изменить переменные в коде:

  • error Migration didn't properly handle:)
  • erro Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number.

-> поэтому мы выпустили новую версию -> теперь в Firebase у нас нет никаких ошибок, но все же некоторые пользователи не имеют данных.

Версия комнаты: 2.2.5 ( до релиза был 2.2.4 )

У кого-то была похожая проблема? или кто-нибудь может посоветовать "как найти, где проблема"?

РЕДАКТИРОВАТЬ:

Миграция:

static final Migration MIGRATION_6_7 = new Migration(6, 7) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            //create new table
            database.execSQL("CREATE TABLE work_days_new2 (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + ...
"hour_salary_day  REAL NOT NULL DEFAULT 0.0, " + ...
);
            //copy old data into new table
            database.execSQL("INSERT INTO work_days_new2 SELECT * FROM work_days ");

            //remove old table
            database.execSQL("DROP TABLE work_days");

            //rename the table
            database.execSQL("ALTER TABLE work_days_new2 RENAME TO work_days");

        }
    };

Изменение модели, например, форма INT -> DOUBLE:

@ColumnInfo(name = "hour_salary_day")
private double hourSalaryDay; 

Спасибо,

...