sam*_*ubr 11 java spring liquibase maven spring-boot
我正在使用带有liquibase-maven-plugin的spring-boot来根据我的类生成数据库更改,但是"mvn compile liquibase:diff"命令总是会生成索引和外键的删除和包含,即使数据库已更新并且类没有变化(因此数据库中应该没有变化).
任何人都知道这是对的还是如何避免它?我只想在项目的变更集中生成对数据库的新更改.
首先,我认为你缺少liquibase-hibernate4 maven 插件。
来自项目Readme.md:
此扩展允许您使用 Hibernate 配置作为 Liquibase 中 diff、diffChangeLog 和generateChangeLog 的比较数据库。
这实际上意味着您可以使用它来将真实数据库与 Java 实体进行比较,以生成新的变更日志。
正如项目 wiki 所建议的,重要的是要记住,您需要查看新的变更日志,并在出现问题时手动修改它。
我还建议您阅读Baeldung 的这篇文章,其中解释了:
你的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>
...
Run Code Online (Sandbox Code Playgroud)
和你的src/main/resources/liquibase.properties:
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
Run Code Online (Sandbox Code Playgroud)
我不确定您使用的是哪种持久存储,但请务必使用正确的驱动程序和数据源 URL。
完成配置后,您应该能够运行mvn liquibase:diffChangeLog以生成新的更改日志。
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |