在我的Spring Boot项目中,我需要使用SQLite数据库.我已经成功地设置了SQLite数据库,如下所示:

依赖关系:

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

正如您在上面看到的,我使用的是on disk SQLite数据库,数据库文件是myDb.db.

我还创建了数据源Bean:

    @Bean
    public DataSource dataSource() {
        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(props.getDriverClassName());
        dataSource.setUrl(props.getUrl());
        dataSource.setUsername(props.getUsername());
        dataSource.setPassword(props.getPassword());
        return dataSource;
    }

我验证了这个SQLite数据库设置是否工作,因为当我开始运行我的项目时,实体类的关联数据库表已在数据库中成功创建.

Next, I try to setup Flyway as below:

我包括了依赖关系:

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

In Application.yml, I added:

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目录

但当开始运行项目时,I end up with error:%

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

我确实理解在SQLite中没有"数据库模式"的概念,所以我也try 手动创建表flyway_schema_history,然后开始运行项目,但我仍然收到相同的错误.

我怎样才能让Flyway+SQLite在春靴中工作?我遗漏了什么?

(我怀疑这是一个数据库连接问题,因为在我设置Flyway之前,项目可以成功地建立连接,并基于JPA实体创建表.或者是我错过了Flyway的某些特定于SQLite的配置来为Flyway建立数据库连接?我不确定...)

推荐答案

您提供的参数太多,下面是我的应用程序YAML文件

spring:
  jpa:
    hibernate.hbm2ddl.auto: create-drop
    hibernate.show_sql: true
  datasource:
    url: jdbc:sqlite:file:myDb.db?cache=shared
    username: root
    password: root
  h2:
    console.enabled: true
  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"

basically I just commented schema and things started working. I also added h2 console and start checking mydb and this is how it looks h2 console with sqlie below are the parameters for h2 console login h2 console login for sqlite here you can find the full working example.

Java相关问答推荐

Spicejet日历处理-使用Selenium Java

在数组中使用意想不到的结果

收听RDX中用户数据的变化

是否可以从@ TrustMapping中删除特定方法的基路径?

Cucumber TestNG Assert失败,出现java. lang. Numbercycle异常

强制Mockito返回null而不是emtpy list

Java 21 struct 化连接货币,需要可预知的子任务异常排序

在Java中,如何按一个属性升序,然后按另一个属性降序对对象列表进行排序?

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

按属性值从流中筛选出重复项

OpenGL ES 3.0-纹理黑色

格式中的特定回录键-值对

如何在EXCEL单元格中添加形状和文本

在向WebSphere中的文档添加元素时iText挂起

Groovy/Java:匹配带引号的命令选项

Regex以查找不包含捕获组的行

有谁能帮我修一下这个吗?使输出变得更加整洁

用于Java的Visual Studio代码完成不起作用

如何使用Java ZoneID的区域设置?

在WHILE()循环初始化部分中声明和初始化变量的Java语法?