【问题标题】:How to create a schema in sqlite in a spring boot service?如何在 Spring Boot 服务中的 sqlite 中创建模式?
【发布时间】:2021-06-09 12:56:19
【问题描述】:

我们已经有一项服务支持 Oracle 和 PostgreSQL 的持久性,并且我们使用 flyway 进行模式迁移。对于新的用例,我们还应该支持 Sqlite。

我现在有一个问题,即 Oracle 和 PostgreSQL 都使用模式,并且 DDL 和插入测试数据的所有 SQL 语句也包括这个模式。我知道想在 Springboot 中配置 Sqlite,这样我也可以在那里使用相同的模式。

到目前为止,我发现这可能适用于 ATTACH 命令,但我不知道如何将它与数据源配置一起使用,以及它如何与 flyway 一起使用。

任何意见表示赞赏。

编辑

我想在 Sqlite 中创建一个类似的表

CREATE TABLE my_schema.ta_user (
    id varchar(36) NOT NULL,
    name varchar(50) NOT NULL,
    description varchar(512) NOT NULL,
    valid_from timestamp,
    created timestamp NOT NULL,
    modified timestamp NOT NULL,
    ip varchar(64) ,
    username varchar(255) ,
    PRIMARY KEY (id)
) ;

但我收到了

[SQLITE_ERROR] SQL 错误或缺少数据库(未知数据库 my_schema)

我需要在其中包含架构的原因是我有很多 IT 测试,我使用 @SQL 注释设置带有测试数据的数据库,并且我不想提供特定于数据库的测试数据(如相同的脚本现在已经适用于 oracle 和 postgresql)

【问题讨论】:

  • 我不明白你的问题。您只需为 SQLite 创建迁移脚本

标签: spring-boot sqlite flyway


【解决方案1】:

您只需使用特定的 sqlite 语法重写您的迁移并将它们放在自己的文件夹中(就像您希望对 oracle / postgres 所做的那样)只需配置您的应用程序(application.yaml / application.properties)以使用来自特定的脚本sqlite 文件夹。

【讨论】:

  • 当然我们已经有了,我的问题从 IT 测试开始,我有 @Sql 注释来使用所需的测试数据设置数据库。这就是为什么我想在 Sqlite 中也有相同的架构
【解决方案2】:

由于我们没有找到更好的解决方案,我们最终为 DDL 和测试数据创建了单独的集合,其中包含和不包含架构信息。在我们的用例中,SQLite 始终用于新建设置,这意味着不会发生迁移,如果架构发生更改,我们会直接在基本 SQL 文件中执行(而不是创建新文件)。尽管如此,对于所有选项,flyway 都用于创建数据库。根据使用的配置文件,我们决定需要为 IT 测试导入哪组测试数据,然后使用 ScriptUtils.executeSqlScript 完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    相关资源
    最近更新 更多