为什么liquibase试图重新创建表DATABASECHANGELOG

时间:2019-10-15 10:15:25

标签: liquibase snowflake-data-warehouse

我如下创建了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

在文件mySnowflakeChangeLog.xml不存在的情况下最初运行liquibase有助于在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 个答案:

答案 0 :(得分:1)

我已经指定了LIQUIBASE的默认模式,但是我没有通知liquibase在哪里检索其表。

这是通过参数 liquibaseSchemaName 完成的,所以我要做的就是在我的liquibase.properties文件中添加以下行

liquibaseSchemaName: LIQUIBASE