Liquibase-错误:关系“;“数据库变更日志”;已经存在

Liquibase-错误:关系“;“数据库变更日志”;已经存在,liquibase,Liquibase,我正在尝试将liquibase与我们的应用程序集成。我使用Maven集成方法执行它 当我执行时,我看到databasechangelog的创建脚本被调用了两次,并出现了“表已经存在”错误。下面是来自console的语句。我使用的是liquibase-core-3.1.1jar INFO 2014-04-28 06:49:liquibase: Successfully acquired change log lock INFO 2014-04-28 06:49:liquibase: Creatin

我正在尝试将liquibase与我们的应用程序集成。我使用Maven集成方法执行它

当我执行时,我看到databasechangelog的创建脚本被调用了两次,并出现了“表已经存在”错误。下面是来自console的语句。我使用的是liquibase-core-3.1.1jar

INFO 2014-04-28 06:49:liquibase: Successfully acquired change log lock
INFO 2014-04-28 06:49:liquibase: Creating database history table with name: databasechangelog
INFO 2014-04-28 06:49:liquibase: ChangeSet src/main/resources/sql/postGre/db.changelog-2.0.xml::1::fms ran successfully in 555ms
INFO 2014-04-28 06:49:liquibase: Creating database history table with name: databasechangelog
SEVERE 2014-04-28 06:49:liquibase: Error executing SQL CREATE TABLE databasechangelog (ID VARCHAR(63) NOT NULL, AUTHOR VARCHAR(63) NOT NULL, FILENAME VARCHAR(200) NOT NULL, DATEEXECUTED TIMESTAMP WITH TIME ZONE NOT NULL, ORDEREXECUTED INT NOT NULL, EXECTYPE VARCHAR(10) NOT NULL, MD5SUM VARCHAR(35), DESCRIPTION VARCHAR(255), COMMENTS VARCHAR(255), TAG VARCHAR(255), LIQUIBASE VARCHAR(20), CONSTRAINT PK_DATABASECHANGELOG PRIMARY KEY (ID, AUTHOR, FILENAME))
org.postgresql.util.PSQLException: ERROR: relation "databasechangelog" already exists
POM文件条目

<plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>2.0.1</version>
            <configuration>
                <changeLogFile>src/main/resources/sql/postGre/changelog-master.xml</changeLogFile>
                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
                <defaultschemaName><<my application schema>> </defaultschemaName>
                <driver>org.postgresql.Driver</driver>
                <url>jdbc:<<mydburl>> </url>
                <username>user</username>
                <password>pwd</password>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>update</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

org.liquibase
liquibase maven插件
2.0.1
src/main/resources/sql/postGre/changelog-master.xml
假的
org.postgresql.Driver
jdbc:
用户
pwd
更新

请告诉我哪里出了问题。

我们使用了较旧版本的posgres,9.1版本接受默认SchemaName,现在开始工作。谢谢你的建议

Mysql数据库中的相同问题,在changelog中添加架构名称后得到解决,如下所示

<changeSet author="chiran" id="Creation of Static Marker">
    <createTable tableName="STATIC_MARKER2" schemaName="SWIFT">
    <column name="marker_id" type="BIGINT" autoIncrement="true">
        <constraints primaryKey="true" nullable="false" />
    </column>
    <column name="marker_name" type="varchar(50)">
        <constraints nullable="false" />
    </column>
    <column name="refillable" type="BIGINT"></column>
    <column name="created" type="TIMESTAMP"/>
    </createTable>
</changeSet>

And below is the snapshot of maven-liquibase plugin version used.
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.6.2</version>

下面是使用的maven liquibase插件版本的快照。
org.liquibase
liquibase maven插件
3.6.2

对于h2数据库,ı也有同样的问题

我的连接字符串是

jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;数据库_到_上限=false

在我从末尾将数据库\u删除到\u UPPER=false之后,它开始工作

最后一个连接字符串如下所示:

jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1


尝试添加不区分大小写的标识符=TRUEparam到您的url连接。例如:

datasource:
    url: jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;

你能试试3.1.1版的liquibase maven插件吗?试过了,它对你的defaultSchemaName示例没有帮助,在你的占位符后面有一个空格。那个空间真的在那里吗?你能在没有defaultSchemaName的情况下尝试吗?我最初尝试过没有defaultSchemaName,当我在寻找解决方案时,我发现了一个博客,他们在那里设置了defaultSchemaName并使其工作,看起来这对我没有帮助…关于空间…不,没有空格最有可能的默认值是DATABASE_TO_UPPER字段为true。我在liquibase maven插件xml中进行了设置,现在它正在工作。我将数据库名称添加到URL并注释掉了该部分。