Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Liquibase:diff总是生成索引_Java_Spring_Maven_Spring Boot_Liquibase - Fatal编程技术网

Java Liquibase:diff总是生成索引

Java Liquibase:diff总是生成索引,java,spring,maven,spring-boot,liquibase,Java,Spring,Maven,Spring Boot,Liquibase,我正在使用spring boot和liquibase maven插件根据我的类生成数据库更改,但是“mvn compile liquibase:diff”命令始终生成索引和外键的删除和包含,即使数据库已更新并且类中没有更改(因此数据库中应该没有更改). 有人知道这是否正确,或者如何避免吗?我只希望在项目的更改集中生成对数据库的新更改。首先,我认为您缺少maven插件 从项目Readme.md: 此扩展允许您将Hibernate配置用作Liquibase中diff、diffChangeLog和g

我正在使用spring boot和liquibase maven插件根据我的类生成数据库更改,但是“mvn compile liquibase:diff”命令始终生成索引和外键的删除和包含,即使数据库已更新并且类中没有更改(因此数据库中应该没有更改).


有人知道这是否正确,或者如何避免吗?我只希望在项目的更改集中生成对数据库的新更改。

首先,我认为您缺少maven插件

从项目
Readme.md

此扩展允许您将Hibernate配置用作Liquibase中diff、diffChangeLog和generateChangeLog的比较数据库

这实际上意味着您可以使用它将真实数据库与java实体进行比较,以生成新的变更日志

正如project wiki所建议的,重要的是要记住,如果出现问题,您需要查看新的变更日志并手动修改它

我还建议您阅读以下内容:

您的
pom.xml
应该如下所示:

...
<dependencies>
  ...
  <dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <version>3.4.1</version>
  </dependency>
  <dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>3.4.1</version>
  </dependency> 
  ...
</dependencies>
...
<plugins>
    ...
    <plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>3.4.1</version>
    <configuration>                  
        <propertyFile>src/main/resources/liquibase.properties</propertyFile>
    </configuration> 
    <dependencies>
        <dependency>
            <groupId>org.liquibase.ext</groupId>
            <artifactId>liquibase-hibernate4</artifactId>
            <version>3.5</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>
    </dependencies>               
</plugin>  
    ...
</plugins>
...
我不确定您使用的是哪种持久性存储,但请确保使用正确的驱动程序和数据源URL


在完全配置它之后,您应该能够运行
mvn liquibase:diffChangeLog
来生成新的变更日志。

我们在以前的工作中遇到过类似的问题,它不是liquibase,而是spring boot hibernate默认配置“ddl auto”。下面是产生这种不需要的行为的配置:请添加您的pom.xml请添加您正在使用的控制台日志和pom.xml。
url=jdbc:mysql://localhost:3306/your_db
username=your_user
password=your_pw
driver=com.mysql.jdbc.Driver #orYourDriver
outputChangeLogFile=src/main/resources/liquibase-outputChangeLog.xml
hibernate:spring:your.model.package?dialect=org.hibernate.dialect.MySQLDialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy