Spring Boot gradle flyway - 验证错误 - 模式验证:缺少表

Posted

技术标签:

【中文标题】Spring Boot gradle flyway - 验证错误 - 模式验证:缺少表【英文标题】:Spring boot gradle flyway - validate error - Schema-validation: missing table 【发布时间】:2021-09-14 19:36:29 【问题描述】:

我收到以下错误 无法构建 Hibernate SessionFactory;嵌套异常是 org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [my.table]

这是版本问题吗?大多数示例甚至官方都不使用模式? https://github.com/spring-projects/spring-boot/tree/main/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-flyway

数据库:MariaDB

步骤: 创建 V1__init.sql 使用

#spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create #spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=V1__init.sql #spring.jpa.properties.javax.persistence.schema-generation.scripts.create-source=metadata

然后添加flyway插件

flyway.properties 与 build.gradle 处于同一级别

flyway.user=py1***

flyway.password=ENC(aCUoPgiA+ZyHDFdrEXa)

flyway.schemas=我的

flyway.createSchemas=false

flyway.url=jdbc:mariadb://localhost:3306/my

flyway.locations=filesystem:db/migration

application.props

spring.jpa.properties.hibernate.default_schema=my

spring.jpa.hibernate.ddl-auto=validate

将 V1__init.sql 移至 db\migrations

我的实体没有指定架构

@Entity
@Table(uniqueConstraints=
        @UniqueConstraint(....)
    ) 
public class SomeTable ...

【问题讨论】:

【参考方案1】:

添加依赖项 - 实现 'org.flywaydb:flyway-core' 并解决了

(关于 json 类型列的下一个错误 - 找到 [longtext (Types#LONGVARCHAR)],但期望 [json (Types#VARCHAR)] 不在本文讨论范围内)

【讨论】:

以上是关于Spring Boot gradle flyway - 验证错误 - 模式验证:缺少表的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot、JOOQ和Flyway如何一起使用?

企业分布式微服务云SpringCloud SpringBoot mybatis (十五)Spring Boot中使用Flyway来管理数据库版本

Flyway H2和MySql升级后不匹配

使用flyway时在启动时清除数据库

Spring-Boot 不适用于 Flyway

Flyway 和 Spring Boot 集成