Как изменить класс домена в Grails?
Я не могу понять, как "стандартная практика" предназначена для изменения класса домена после того, как она автоматически создала соответствующую таблицу базы данных.
В Grails нет "миграции", и я не могу найти, чтобы сказать ему, чтобы он выводил новый SQL, который он сгенерировал, чтобы вы могли сравнить его с предыдущим определением таблицы и вручную выпустить собственную команду ALTER TABLE (что что я делаю в джанго).
Я только что получил книгу "Окончательное руководство по Grails", и она молчала по этому вопросу, и я не могу найти что-либо на веб-сайте Grails.
Ответы
Ответ 1
Это слабая точка грааля, и я не знаю, как это сделать. То, что я делаю, это создать копию модифицированного класса домена, а затем сравнить схему SQL таблицы модифицированного класса домена с тем, что сгенерировано копией класса домена. Затем вам нужно вручную внести необходимые изменения в исходную таблицу. Я обнаружил, что такие вещи, как отношения, как правило, меняются, когда класс домена, но такие вещи, как добавление ограничения, чтобы заставить поле быть текстовым типом, не всегда меняются........
Ответ 2
Если вы хотите явно управлять схемой базы данных для приложения Grails, я предлагаю вам посмотреть плагин Grails Liquibase или плагин Grails autobase.
Ответ 3
возможно, вам стоит подумать о создании модуля резервного копирования/восстановления для вашего приложения, которое не зависит от базы данных (может быть сериализовано в xml или json) - таким образом, при изменении db вы также изменяете резервное копирование/восстановление в таким образом, чтобы данные старого домена "обновлялись" до данных домена ne.
Мне нравится, как django может сделать это автоматически, но theres больше магии в django, что я не понимаю...
Ответ 4
вы также можете попробовать команду "grails schema-export", которая даст вам выходной sql, который имеет все команды create для таблиц и ограничений.
С помощью этой ссылки вы можете создавать свои скрипты. Это лучший доступный в настоящее время, я думаю.
Сообщите нам, если вы найдете лучший способ.
Ответ 5
Вы должны попробовать плагин миграции базы данных, который имеет хорошую документацию и активно поддерживается.