Я хотел бы создать или заменить представление DB2 с использованием liquibase и его тега changeSet: Пример XML
Это то, что я включаю в файл changelog.xml:
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" logicalFilePath="lon-service-mpd/gin/15.100/15.100.0.0.changelog.xml" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"> <changeSet author="mas-gin-gestion-echelon-service" id="create-view-from-table-periodeavancement-type-personnel"> <createView schemaName="GIN" viewName="V_PERIODEAVANCEMENT_1">select IDPERIODE, CAMPAGNETA from GIN.PERIODEAVANCEMENT</createView> </changeSet> </databaseChangeLog>
Однако при создании представления DB2 возвращает следующую ошибку liquibase.exception.DatabaseException: Ошибка SQL DB2: SQLCODE = -206, SQLSTATE = 42703
Я не нахожу способ исправить проблему, даже если синтаксис SQL правильный.
Я исправил проблему, вызвав непосредственно файл SQL вместо использования образца XML .Вот мое решение:
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" logicalFilePath="mas-gin-gestion-echelon-service-mpd/gin/15.100/15.100.0.0.changelog.xml" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"> <changeSet id="create_view_periodeavancement" author="mas-gin-gestion-echelon-service"> <sqlFile path="sql/create_view_periodeavancement.sql" relativeToChangelogFile="true"/> </changeSet>
И файл sql:
CREATE OR REPLACE VIEW GIN.V_PERIODEAVANCEMENT_1 (IDPERIODE, TS_INSERT, BL_DELETE ) AS SELECT IDPERIODE, TS_INSERT, BL_DELETE FROM PERIODEAVANCEMENT;