Grails автоматическое обновление ограничений - PullRequest
1 голос
/ 28 мая 2010

Имеет ли Grails автоматическое обновление ограничений. Если мы изменим поле в доменном классе на обнуляемое, добавив ограничение, оно не будет отражено в базе данных без экспорта схемы. Можно ли сделать так, чтобы Grails сделал это обновление автоматически.

Ответы [ 2 ]

2 голосов
/ 28 мая 2010

Нет, Grails / Hibernate не будет автоматически обновлять вашу схему БД (за исключением простых случаев, таких как добавление нового атрибута), потому что это не задача, которая может быть надежно автоматизирована (особенно при изменении типов данных или ограничений). Что бы Hibernate должен был делать с существующими данными, если вы измените тип данных свойства с String на int?

Итак, все это нужно делать вручную. Однако для этого есть инструментальная поддержка, а именно плагин Autobase , основанный на liquibase . Если вы когда-либо разрабатывали с RoR, вы, возможно, знакомы с миграциями - это, по сути, то, что предоставляет автобаза. Я определенно могу порекомендовать autobase / liquibase, мы используем его во всех наших производственных проектах.

0 голосов
/ 29 мая 2010

Самое основное, что вы можете сделать, это это.

Вы должны вести журнал изменений для своего приложения, эти изменения схемы БД должны записываться в этом журнале (просто текстовом файле) по мере их создания. Затем с каждым выпуском, который вы делаете, должен быть связан скрипт SQL (если есть изменения в БД), этот скрипт должен обрабатывать эти изменения ограничений (и другие вещи ...).

Перед запуском в производство этот сценарий SQL необходимо проверить в соответствии с промежуточной средой.

Кроме того, вы можете подождать, чтобы сохранить версию схемы БД в вашей БД (в виде мета-таблицы), миграция Rails делает это.

Выше приведено не исчерпывающее руководство, просто общие указания

...