Sugar ORM отбрасывает столбец при обновлении базы данных
Я использую Sugar ORM в своем проекте. Мне нужно добавить столбец в таблицу sqlite в моей следующей версии приложения. Я проверил документацию по миграции Sugar ORM, но я не могу найти способ добавить столбец в него.
2 ответа
Так как android-sugarorm
(sugarorm
) использует SQLite
под ним невозможно использовать ALTER TABLE
удалить столбец (поле), чтобы это не делалось автоматически.
SQLite
поддерживает ограниченное подмножествоALTER TABLE
,ALTER TABLE
команда вSQLite
позволяет пользователю переименовывать таблицу или добавлять новый столбец в существующую таблицу. Невозможно переименовать столбец, удалить столбец или добавить или удалить ограничения из таблицы.
В SQLite
вы можете:
(1). создать новую таблицу как ту, которую вы пытаетесь изменить (без столбца для удаления)
(2). скопировать все данные (кроме столбца, который вы хотите удалить)
(3). уронить старый стол
(4). переименуйте новую таблицу в старое имя.
См. Также Перенос базы данных из предыдущей версии.
SQLite FAQ
Следуй этим шагам:
- Создайте папку с именем sugar_upgrades в папке ваших активов
- Создайте файл с именем
.sql в этой папке, который соответствует версии базы данных. например. 1.sql, 2.sql Этот файл будет содержать все запросы на обновление / изменение этой конкретной версии. - Измените поле метаданных VERSION в AndroidManifest.xml на соответствующую версию.
Для более подробной информации проверьте миграцию сахара