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

Spring Boot中Flyway与SQLite数据库集成报错的解决方法

Spring Boot中Flyway与SQLite集成问题排查与解决

已完成的配置

1. SQLite基础配置(JPA可正常工作)

依赖配置:

implementation("org.xerial:sqlite-jdbc:3.42.0.0")
implementation("org.hibernate.orm:hibernate-community-dialects")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")

application.yml配置:

spring:
  datasource:
    url: jdbc:sqlite:file:myDb.db?cache=shared
    username: root
    password: root

已自定义DataSource Bean,启动时JPA可正常生成实体关联表,排除数据库连接问题。

2. Flyway配置尝试

添加依赖:

implementation("org.flywaydb:flyway-core:8.5.11")

application.yml新增Flyway配置:

spring:
  ...
  flyway:
    baseline-on-migrate: true
    schemas: myDb
    enabled: true
    url: jdbc:sqlite:file:myDb.db?cache=shared
    user: root
    password: root
    validate-on-migrate: true
    locations: "classpath:db/migration"

已创建src/main/resources/db/migration目录。

启动错误信息

Caused by: org.flywaydb.core.internal.exception.FlywaySqlException: Unable to check whether table "myDb"."flyway_schema_history" exists

已知SQLite无数据库schema概念,手动创建flyway_schema_history表后仍报错,需解决Flyway与SQLite的集成问题。

解决方案

核心问题分析

SQLite不支持传统多schema概念,配置中flyway.schemas: myDb会让Flyway尝试以"myDb"作为schema前缀查找表,违背SQLite表命名逻辑,导致表不存在的错误。

具体修正步骤

  1. 移除Flyway的schema配置
    删除spring.flyway.schemas: myDb配置项,让Flyway使用SQLite默认表空间(无需指定schema)。

  2. 调整Flyway配置适配SQLite特性
    更新后的Flyway配置如下:

    spring:
      flyway:
        baseline-on-migrate: true
        enabled: true
        url: jdbc:sqlite:file:myDb.db?cache=shared
        user: ""  # SQLite无需用户名密码,留空即可
        password: ""
        validate-on-migrate: true
        locations: "classpath:db/migration"
        table: flyway_schema_history  # 显式指定历史表名,无需schema前缀
        sql-migration-prefix: V
        sql-migration-suffixes: .sql
    
  3. 删除手动创建的历史表
    移除之前手动创建的flyway_schema_history表,让Flyway自动在SQLite中创建符合要求的表结构,避免结构不匹配问题。

验证步骤

  1. 确认myDb.db中无手动创建的flyway_schema_history表。
  2. 启动Spring Boot应用,Flyway会自动创建历史表并执行db/migration目录下的迁移脚本。
  3. 检查数据库文件,确认flyway_schema_history表已创建且迁移脚本执行成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:52:50