Как изменить класс домена в Grails? - PullRequest
12 голосов
/ 03 августа 2009

Я не могу понять, какова "стандартная практика" для изменения класса домена после того, как он автоматически создал соответствующую таблицу базы данных.

В Grails нет «миграции», и я не могу найти способ, чтобы заставить его выводить новый SQL, который он сгенерирует, чтобы вы могли сравнить его с предыдущим определением таблицы и вручную выполнить собственную команду ALTER TABLE ( что я делаю в джанго).

Я только что получил книгу "Полное руководство по Grails", в ней ничего не сказано, и я не могу найти что-либо на веб-сайте Grails.

Ответы [ 5 ]

10 голосов
/ 03 августа 2009

Если вы хотите явно управлять схемой базы данных для приложения Grails, я предлагаю вам взглянуть на плагин Grails Liquibase или плагин Grails autobase .

4 голосов
/ 03 августа 2009

Это слабое место Грааля, и я не знаю, как с этим справиться. Я создаю копию измененного класса домена, затем сравниваю схему SQL таблицы измененного класса домена с той, которая генерируется копией класса домена. Затем вы должны вручную внести все необходимые изменения в исходную таблицу. Я обнаружил, что такие вещи, как отношения, как правило, меняются при изменении класса домена, но такие вещи, как добавление ограничения, заставляющего поле быть текстовым типом, не всегда меняются .......

0 голосов
/ 03 декабря 2014

Вы должны попробовать плагин для переноса базы данных , который имеет хорошую документацию и активно поддерживается.

0 голосов
/ 30 декабря 2009

вы также можете попробовать команду 'grails schema-export' .. которая даст вам вывод sql, содержащий все команды создания таблиц и ограничений.

Исходя из этого, вы можете создавать свои сценарии изменения. Это лучшее из доступных на данный момент, я думаю ..

Дайте нам знать, если вы найдете лучший способ ..

0 голосов
/ 05 августа 2009

возможно, вам следует подумать о создании модуля резервного копирования / восстановления для вашего приложения, независимого от базы данных (может быть сериализованным в xml или json) - таким образом, когда вы изменяете db, вы также изменяете резервное копирование / восстановление в таким образом, что старые данные домена «обновляются» до данных домена.

Мне нравится, как django может делать это автоматически, но в django больше магии, чего я не понимаю ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...