Я могу использовать mvn liquibase:update
для выполнения запросов .sql к моей базе данных Firebird.
Это работает:
CREATE TABLE xxx (
xxx
);
Но когда я выполняю эту команду в .sql, она терпит неудачу (X представляет длину, я видел, что это слишком долго для MySQL, но это Firebird):
GRANT SELECT ON XXXX_XXXXXX TO XXXXX_XXXX_XXXXX_XXXX;
Ошибка:
[ERROR] Reason: liquibase.exception.DatabaseException: GDS Exception. 335544569. Dynamic SQL Error
[ERROR] SQL error code = -104
[ERROR] Token unknown - line 8, column 1
[ERROR] GRANT [Failed SQL: CREATE TABLE XXXX_XXXX(
Строка в ошибке - это строка моей команды GRANT. Когда я удаляю эту команду из скрипта (выполняю только CREATE TABLE), она работает. Что я делаю не так?
Выполнение команды вручную работает.
Обновление:
Кажется, что установка работает, когда я добавляю оператор создания таблицы в 0001.sql и команду Grant в 0002.sql.
Мой файл .sql выглядит следующим образом (мой конфиг firebird используется по умолчанию после установки 2.5.8):
CREATE TABLE TEST_GAMES (
TEST_GAME_ID INTEGER NOT NULL,
MONO_ID VARCHAR(255) NOT NULL,
PERIOD_FROM TIMESTAMP NOT NULL,
PERIOD_TO TIMESTAMP NOT NULL
);
GRANT SELECT ON TEST_GAMES TO GAME_TEST_GAME_READ;
GAME_TEST_GAME_READ
производится при настройке БД:
CREATE DATABASE 'C:/firebird/TEST_GAME.fdb' USER 'TEST_GAME' PASSWORD 'TEST_GAME';
CONNECT 'C:/firebird/TEST_GAME.fdb' USER 'TEST_GAME' PASSWORD 'TEST_GAME';
CREATE ROLE GAME_TEST_GAME_READ;
CREATE ROLE GAME_TEST_GAME_WRITE;
Liquibaseconfig:
<properties>
<liquibase.plugin.version>3.5.3</liquibase.plugin.version>
<firebird.client.version>2.1.6</firebird.client.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<configuration>
<propertyFile>liquibase/liquibase.properties</propertyFile>
<changeLogFile>liquibase/db-changelog-master.xml</changeLogFile>
</configuration>
Мастер изменений содержит раздел / скрипты, которые выполняются
файл свойств:
# Firebird
driver=org.firebirdsql.jdbc.FBDriver
url=jdbc:firebirdsql://localhost:3050/C:/firebird/GAME_TEST_GAME.fdb
username=GAME_TEST_GAME
password=GAME_TEST_GAME
Update2:
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
<include file="liquibase/db-changelog-1.0.xml"/>
</databaseChangeLog>
и changelog1:
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
<includeAll path="01-testgame-scripts/" relativeToChangelogFile="true"/>
<changeSet id="tag-1.0" author="myname">
<tagDatabase tag="1.0" />
</changeSet>
</databaseChangeLog>
и внутри 01-testgame-scripts
У меня есть файл .sql
.