Как перенести базу данных Room, если столбец необходимо добавить в объект @Fts4?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как перенести базу данных Room, если столбец необходимо добавить в объект @Fts4?

Сообщение Anonymous »

Я использую Room (версия 2.6.1) с аннотацией @Entity @Fts4 для поддержки полнотекстового поиска (который работает отлично).
Это моя сущность, а это версию, которую Room автоматически создал для инициализации моей базы данных.
Теперь я хочу добавить новое поле в мою сущность, которое также должно быть проиндексировано через FTS, и следовать документу для создания автоматической миграции.
Проблема в том, что поскольку таблицы FTS являются виртуальными таблицами, их нельзя изменить, поэтому любая автоматическая миграция не удалась.
Я попробовал написать миграцию вручную, удалив и воссоздав таблицу FTS следующим образом:
р>

Код: Выделить всё

static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL("DROP TABLE IF EXISTS recipes_fts;");
database.execSQL("CREATE VIRTUAL TABLE IF NOT EXISTS recipes_fts USING FTS4(title, description, source, ingredients, notes, tokenize=unicode61 `tokenchars=#`, content=`recipes`);");
database.execSQL("ALTER TABLE recipes ADD COLUMN notes TEXT;");
}
};
У меня есть следующие проблемы:
  • Мне также пришлось бы удалить и воссоздать триггеры, созданные Room. для исходной версии и перестроить таблицу FTS, которая беспорядочна и лишает меня смысла использовать Room.
  • При использовании миграции вручную я столкнулся с этой проблемой и не нашел способ решить эту проблему
  • Использование инспектора базы данных показывает, что существует множество таблиц, связанных с FTS, созданных автоматически (см. теневые таблицы в документе FTS), и я не уверен, можно ли их удалить тоже
Как люди обычно выполняют миграцию с помощью Room, когда задействована FTS?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ts4-entity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»