Почему liquibase пытается воссоздать таблицу DATABASECHANGELOG - PullRequest
1 голос
/ 15 октября 2019

Я создал liquibase.properties следующим образом:

driver: net.snowflake.client.jdbc.SnowflakeDriver
classpath: ./liquibase-snowflake-1.0.jar
url: jdbc:snowflake://....us-east-1.snowflakecomputing.com/?db=...&warehouse=...&schema=LIQUIBASE&role=SYSADMIN
username: ...
password: ...
changeLogFile: mySnowflakeChangeLog.xml

Первоначально запущенный liquibase, в то время как файл mySnowflakeChangeLog.xml не существовал, работал над созданием таблиц liquibase в схеме LIQUIBASE (которую я должен был создать первым).

Теперь, если я предоставлю простой файл журнала изменений mySnowflakeChangeLog.xml (см. Ниже), произойдет сбой обновления при попытке воссоздать базовую таблицу liquibase: " Объект 'DATABASECHANGELOG' уже существует"

<?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"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

    <changeSet author="eric" id="changelog-1.0">
        <createTable tableName="TablesAndTables">
        <column name="COLUMN1" type="TEXT">
            <constraints nullable="true" primaryKey="false" unique="false"/>
        </column>
        </createTable>
    </changeSet>
</databaseChangeLog>

Я что-то упустил? (Полагаю, я ...)

1 Ответ

1 голос
/ 15 октября 2019

Я указал схему по умолчанию для LIQUIBASE, но я не сообщил о том, где liquibase получить ее таблицы.

Это делается с помощью параметра liquibaseSchemaName , поэтому все, что мне нужно было сделать, этодобавьте следующую строку в мой файл liquibase.properties

liquibaseSchemaName: LIQUIBASE
...