我正在尝试将 liquibase 与我们的应用程序集成。我正在使用 Maven 集成方法执行它。
当我执行时,我看到 databasechangelog 的创建脚本被调用了两次并得到“表已经存在”错误。以下是来自控制台的语句。我正在使用 liquibase-core-3.1.1 jar。
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
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
请不要让我哪里出错了..
对于 h2 数据库?有同样的问题。
我的连接字符串是
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;
从最后删除 DATABASE_TO_UPPER=false后,它开始工作。
最后一个连接字符串如下:
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;
小智 7
尝试添加CASE_INSENSITIVE_IDENTIFIERS=TRUE; param 到你的 url 连接。例子 :
datasource:
url: jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7534 次 |
| 最近记录: |