Liquibase дает синтаксическую ошибку для включенного файла SQL, что в противном случае является правильным - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть файл журнала изменений, часть которого выглядит следующим образом:

<include file="ChangeSets/00_SessionAuth.xml"/>
<include file="ChangeSets/01_Legacy_Baseline_V197_ANB.xml" context="legacy"/>
<include file="ChangeSets/02_V198_ANB.xml" context="non-legacy"/>

В набор изменений 01_Legacy_Baseline_V197_ANB.xml включено 197 сценариев sql, которые являются частью устаревшей базы данных.

Набор изменений 02_V198_ANB.xml определен как:

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog  
                        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd
                        http://www.liquibase.org/xml/ns/dbchangelog-ext 
                        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">

        <include file="ChangeSets/sql/Dummy_schema/V198_AddColumn.sql"/>

</databaseChangeLog>

Когда я запускаю обновление Liquibase с контекстом как устаревшим, я получаю следующую ошибку:

Unexpected error running Liquibase: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=SET SCEHMA = Dummy_schema;;BEGIN-OF-STATEMENT;<space>, DRIVER=3.62.56 [Failed SQL: SET SCEHMA = Dummy_schema;

Сам файл SQLправильно.

Я думаю, что это проблема, связанная с конечным разделителем или splitStatements.

SQL выглядит так:

SET SCEHMA = Dummy_schema;

ALTER TABLE T1 ADD COLUMN C1 VARCHAR(35)
               ADD COLUMN C2 INTEGER;

Call Sysproc.admin_cmd ('REORG TABLE dummy_schema.T1');

ALTER TABLE T2 ADD COLUMN CT1 INTEGER; 

Call Sysproc.admin_cmd ('REORG TABLE dummy_schema.T2');

Мы используем DB2 V10.5.

Может ли кто-то также предоставить список атрибутов, которые мы можем использовать с тегом.

С уважением

1 Ответ

0 голосов
/ 26 сентября 2018

Мне кажется, ваше утверждение, что

сам файл SQL правильный

неверно.Это является допустимым SQL, если он был запущен через приложение командной строки db2, но это не действительный SQL, который будет отправлен через JDBC-запрос, что делает Liquibase.

...