【问题标题】:mvn liquibase:diff, generating same file everytimemvn liquibase:diff,每次生成相同的文件
【发布时间】:2020-01-29 17:04:09
【问题描述】:

对持久实体所做的任何更改,只有对实体所做的更改才会反映在生成的 diff liquibase 文件中。但目前它每次运行“mvn liquibase:diff”时都会生成完整的更改日志文件。

请在 pom.xml 中找到设置

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>3.5.3</version>
    <configuration>                  
        <propertyFile>src/main/resources/liquibase.properties</propertyFile>
        <diffChangeLogFile>src/main/resources/db/changelog/migrations/changelog.${timestamp}.xml</diffChangeLogFile>
        <referenceUrl>hibernate:spring:com.company.project?hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&amp;dialect=org.hibernate.dialect.PostgreSQLDialect</referenceUrl>
        <changeLogFile>src/main/resources/db/changelog/db.changelog-master.xml</changeLogFile>
        <outputChangeLogFile>src/main/resources/db/changelog/db.changelog.xml</outputChangeLogFile>
        <driver>org.postgresql.Driver</driver>
        <url>jdbc:postgresql://localhost:5432/db</url>
        <defaultSchemaName>db</defaultSchemaName>
        <username>***</username>
        <password>***</password>
    </configuration> 
    <dependencies>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.4.1212.jre7</version>
        </dependency>
        <dependency>
            <groupId>org.liquibase.ext</groupId>
            <artifactId>liquibase-hibernate4</artifactId>
            <version>3.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.7.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.12.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
    </dependencies>   
</plugin> 

liquibase.properties 文件:

url=jdbc:postgresql://localhost:5432/db
username=***
password=***
driver=org.postgresql.Driver
changeLogFile=src/main/resources/db/changelog/db.changelog-master.xml
outputChangeLogFile=src/main/resources/db/changelog/db.changelog-master.xml
referenceUrl=hibernate:spring:com.company.project?dialect=org.hibernate.dialect.PostgreSQLDialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
referenceDefaultSchemaName=db

请告诉我这里缺少什么。

【问题讨论】:

  • 数据库@jdbc:postgresql://localhost:5432/db 是否为空?如果是,则生成完整的更改日志是正常的。数据库必须包含实体单次更改之前的当前状态。

标签: spring hibernate maven spring-boot liquibase


【解决方案1】:

根据doc需要指定:

--referenceUsername= 基础数据库用户名。

--referencePassword= 基本数据库密码。

--referenceUrl= 基本数据库 URL。

referenceUrl - 看起来很神奇,您需要指定正确的数据库 URL。

【讨论】:

  • 由于我使用 maven,所以上面的设置存在于 pom 中,另外因为我需要与 jpa 实体同步,所以“referenceUrl”就像“hibernate:spring:com.company.project?.... "
猜你喜欢
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多