postgresql - Liquibase 忽略数据库内容并从头开始创建差异
问题描述
我有一个基于Spring Boot和Hibernate的项目。我使用Liquibase进行迁移。每次我运行mvn liquibase:diff
它都会根据我的模型创建一个完整的变更集,比如我的Postgres DB是完全空的。我希望Liquibase只创建增量。我错过了什么?
Maven 构建成功,唯一的警告是:
[WARNING] Did not find schema 'mydb' to snapshot
这是Maven配置:
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>${liquibase.version}</version>
<configuration>
<propertyFile>src/main/resources/liquibase/config/liquibase.properties
</propertyFile>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
<dependencies>
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-hibernate5</artifactId>
<version>3.10.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.starter.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.starter.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.0.Final</version>
</dependency>
</dependencies>
</plugin>
liquibase.properties
changeLogFile=src/main/resources/liquibase/liquibase-changeLog.xml
diffChangeLogFile=src/main/resources/liquibase/liquibase-changeLogDiff.xml
outputChangeLogFile=src/main/resources/liquibase/liquibase-new-changeLog.xml
url=jdbc:postgresql://localhost:5432/mydb
defaultSchemaName=mydb
username=postgres
password=postgres
driver=org.postgresql.Driver
referenceDriver=liquibase.ext.hibernate.database.connection.HibernateDriver
referenceUrl=hibernate:spring:com.project.model?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
应用程序属性
spring.datasource.url = jdbc:postgresql://localhost:5432/mydb
spring.datasource.username = postgres
spring.datasource.password = postgres
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation = true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto = none
# Liquibase
spring.liquibase.change-log = classpath:liquibase/liquibase-changeLog.xml
解决方案
推荐阅读
- json - 如何在 GJSON 中循环切片
- c# - c# System.InvalidCastException 将数据表传递给存储过程时
- azure - Azure 搜索服务的 ARM 部署 - 生成查询密钥
- php - 如何基于isset在echo中发送多个参数
- python - PyQt5:在执行while循环之前不显示子窗口
- xpath - WSO2 ESB 如何从端点读取 XML 属性响应
- node.js - 作为 Cognito 验证的一部分,在 SES 中验证电子邮件
- api - WSO2 EI - 将带有特殊字符的 JSON 请求发布到 API 时出错
- haskell - 使用 amazonka-s3 中的 `getObject` 时的`ConnectionClosed`
- roblox - Roblox:检查库存中的工具