【发布时间】:2014-06-13 16:06:20
【问题描述】:
我正在尝试将 liquibase 与我们的应用程序集成。我正在使用 Maven 集成方法执行它。
当我执行时,我看到数据库更改日志的创建脚本被调用了两次并得到“表已存在”错误。以下是来自控制台的语句。我正在使用 liquibase-core-3.1.1 罐子。
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>
请告诉我哪里出错了..
【问题讨论】:
-
你可以在 3.1.1 版本中尝试使用 liquibase-maven-plugin 吗?
-
试过了,没用
-
带有 defaultSchemaName 的示例在占位符后有一个空格。那个空间真的存在吗?不用 defaultSchemaName 可以试试吗?
-
我最初尝试不使用 defaultSchemaName,在寻找解决方案时,我发现了一个博客,他们在其中设置了 defaultSchemaName 并使其正常工作,看起来它对我没有帮助...关于空间...不,没有空间
标签: liquibase