Spring Boot集成Flyway首次初始化后新增schema不创建问题排查
问题原因
- Flyway本身的设计逻辑决定了:仅在**首次执行migrate操作(检测不到配置的元数据表
schema_version)**时,才会自动创建spring.flyway.schemas配置列表中所有不存在的schema。只要元数据表已经存在,后续修改配置新增的schema不会被自动创建。 - 你首次启动时已经在列表第一个schema(schema1)中生成了
schema_version元数据表,后续新增schema3后重启应用,Flyway检测到元数据表已存在,直接跳过了schema创建的前置步骤,因此schema3不会被自动生成。
解决办法
- 生产环境推荐:新增版本号最低的Flyway迁移脚本,在脚本中写入
CREATE SCHEMA IF NOT EXISTS schema3;,Flyway执行迁移时会自动创建不存在的schema,无数据风险。 - 手动处理:直接在对应的数据库中手动执行创建schema3的SQL,后续Flyway会正常对该schema执行迁移逻辑。
- 开发环境临时方案:启动应用时加启动参数
--flywayClean,触发你自定义Bean中的clean逻辑,清理所有旧的schema和元数据后会重新走首次初始化流程,自动创建所有配置的schema,注意该操作会清空所有库表数据,禁止在生产环境使用。
内容的提问来源于stack exchange,提问作者Suzan
相关产品推荐
相关产品推荐

