Sugar ORM отбрасывает столбец при обновлении базы данных

Я использую Sugar ORM в своем проекте. Мне нужно добавить столбец в таблицу sqlite в моей следующей версии приложения. Я проверил документацию по миграции Sugar ORM, но я не могу найти способ добавить столбец в него.

2 ответа

Так как android-sugarorm (sugarorm) использует SQLite под ним невозможно использовать ALTER TABLE удалить столбец (поле), чтобы это не делалось автоматически.

SQLite поддерживает ограниченное подмножество ALTER TABLE, ALTER TABLE команда в SQLite позволяет пользователю переименовывать таблицу или добавлять новый столбец в существующую таблицу. Невозможно переименовать столбец, удалить столбец или добавить или удалить ограничения из таблицы.

ALTER TABLE SQLite

В SQLite вы можете:

(1). создать новую таблицу как ту, которую вы пытаетесь изменить (без столбца для удаления)
(2). скопировать все данные (кроме столбца, который вы хотите удалить)
(3). уронить старый стол
(4). переименуйте новую таблицу в старое имя.

См. Также Перенос базы данных из предыдущей версии.
SQLite FAQ

Следуй этим шагам:

  • Создайте папку с именем sugar_upgrades в папке ваших активов
  • Создайте файл с именем .sql в этой папке, который соответствует версии базы данных. например. 1.sql, 2.sql Этот файл будет содержать все запросы на обновление / изменение этой конкретной версии.
  • Измените поле метаданных VERSION в AndroidManifest.xml на соответствующую версию.

Для более подробной информации проверьте миграцию сахара

Другие вопросы по тегам