5.10.2. Инициализация и обновление БД из командной строки
Скрипты создания и обновления БД могут быть запущены из командной строки с помощью класса com.haulmont.cuba.core.sys.utils.DbUpdaterUtil
, входящего в состав блока Middleware платформы. При запуске должны быть переданы следующие аргументы:
-
dbType
– тип СУБД, возможные значения: postgres, mssql, oracle, mysql. -
dbVersion
– версия СУБД (необязательный аргумент). -
dbDriver
- имя класса JDBC-драйвера (необязательный аргумент). Если не передан, имя класса драйвера определяется исходя изdbType
. -
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 \
-dbType postgres -dbUrl $DB_URL \
-dbUser $1 -dbPassword $2 \
-scriptsDir $SCRIPTS \
-$3
Данный скрипт рассчитан на работу с БД с именем mydb
, расположенной на локальном сервере PostgreSQL. Скрипт должен быть расположен в каталоге bin
сервера Tomcat, и запускаться с параметрами {имя пользователя}
, {пароль}
, {команда}
, например:
./dbupdate.sh cuba cuba123 update
Ход выполнения скриптов отображается в консоли. При возникновении ошибок обновления следует поступать так же, как описано в предыдущем разделе для механизма автоматического обновления.
При обновлении БД из командной строки имеющиеся Groovy-скрипты запускаются, но реально отрабатывает только их основная часть. По причине отсутствия контекста сервера PostUpdate-часть игнорируется с выдачей в консоль соответствующего сообщения. |