Скрипты создания и обновления БД могут быть запущены из командной строки с помощью класса com.haulmont.cuba.core.sys.utils.DbUpdaterUtil
, входящего в состав блока Middleware платформы. При запуске должны быть переданы следующие аргументы:
-
dialect
- тип СУБД, возможные значения: postgres, mssql, oracle. -
dbUser
- имя пользователя БД. -
dbPassword
- пароль пользователя БД. -
dbUrl
- URL для подключения к БД. Для выполнения первичной инициализации указанная база данных должна быть пустой, никакой предварительной очистки ее не производится. -
scriptsDir
- абсолютный путь к каталогу, содержащему скрипты в стандартной структуре. Как правило, используется каталог скриптов базы данных, поставляемый с приложением. -
одна из возможных команд:
-
create
- выполнить инициализацию базы данных. -
check
- отобразить список невыполненных скриптов обновления. -
update
- выполнить обновление базы данных.
-
Пример скрипта для Linux, запускающего DbUpdaterUtil
:
#!/bin/sh DB_URL="jdbc:postgresql://localhost/mydb" APP_CORE_DIR="./../webapps/app-core" WEBLIB="$APP_CORE_DIR/WEB-INF/lib" SCRIPTS="$APP_CORE_DIR/WEB-INF/db" TOMCAT="./../lib" SHARED="./../shared/lib" CLASSPATH="" for jar in `ls "$TOMCAT/"` do CLASSPATH="$TOMCAT/$jar:$CLASSPATH" done for jar in `ls "$WEBLIB/"` do CLASSPATH="$WEBLIB/$jar:$CLASSPATH" done for jar in `ls "$SHARED/"` do CLASSPATH="$SHARED/$jar:$CLASSPATH" done java -cp $CLASSPATH com.haulmont.cuba.core.sys.utils.DbUpdaterUtil \ -dialect postgres -dbUrl $DB_URL \ -dbUser $1 -dbPassword $2 \ -scriptsDir $SCRIPTS \ -$3
Данный скрипт рассчитан на работу с БД с именем mydb
, расположенной на локальном сервере PostgreSQL. Скрипт должен быть расположен в каталоге bin
сервера Tomcat, и запускаться с параметрами {имя пользователя}
, {пароль}
, {команда}
, например:
./dbupdate.sh cuba cuba123 update
Ход выполнения скриптов отображается в консоли. При возникновении ошибок обновления следует поступать так же, как описано в предыдущем разделе для механизма автоматического обновления.
При обновлении БД из командной строки имеющиеся Groovy-скрипты запускаются, но реально отрабатывает только их основная часть. По причине отсутствия контекста сервера PostUpdate-часть игнорируется с выдачей в консоль соответствующего сообщения.