You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次部署Spring Boot应用Flyway迁移报错:relation 'usr'不存在

Spring Boot数据库迁移报错:relation "usr"不存在的排查与解决

以下是针对该问题的具体排查方向和解决方法:

  • 检查Flyway迁移历史表状态
    登录数据库查看Flyway自动生成的flyway_schema_history表,确认V1__Init_DB.sql的执行状态。如果V1脚本的状态为FAILED或无相关记录,说明建表脚本未成功执行。此时可删除该表中错误的历史记录,或清空表后重启应用,让Flyway重新执行所有迁移脚本。

  • 验证V1建表脚本的有效性
    将V1__Init_DB.sql中的建表SQL单独复制到数据库客户端(如pgAdmin、DBeaver)执行,确认是否能成功创建usr表。重点排查语法问题:比如PostgreSQL中表名大小写敏感,若V1脚本使用CREATE TABLE "Usr"(带双引号),而V2脚本用INSERT INTO usr(小写无引号),会导致表名不匹配;或是建表语句存在语法错误(如字段类型写错、缺省值问题),导致建表失败。

  • 确认Windows环境下的迁移文件排序
    Flyway严格按文件名字典序执行迁移脚本,Windows系统的文件排序可能存在大小写不敏感的情况,但Flyway会区分。确保迁移文件命名规范:V1脚本文件名在前、V2在后,无空格或特殊字符干扰。例如避免将V1脚本命名为V1__Init DB.sql(含空格),统一使用V1__Init_DB.sql格式。同时检查是否存在其他迁移文件(如V1.1版本)插入在V1和V2之间,导致执行顺序异常。

  • 检查Spring Boot的Flyway配置项
    查看application.properties或application.yml中的Flyway配置:

    • 确认flyway.enabled设为true
    • 检查flyway.locations是否指向正确的迁移文件目录(默认是classpath:db/migration),若路径错误,Flyway会找不到V1脚本直接执行V2
    • 若配置了flyway.baseline-on-migrate=true,可能会跳过早期迁移脚本,需根据实际需求调整该配置
  • 排查数据库权限问题
    确认应用连接数据库的用户拥有创建表的权限。若权限不足,V1脚本执行时会静默失败(或仅抛出不明显的错误),导致usr表未创建,进而引发V2脚本报错。可手动给该用户授予CREATE TABLE权限后重启应用。

内容的提问来源于stack exchange,提问作者PoToM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:15:06