是否可以在 Spring Boot 应用程序中使用脚本创建数据库,并使用 flyway for postgres?如果是的话怎么办?

Posted

技术标签:

【中文标题】是否可以在 Spring Boot 应用程序中使用脚本创建数据库,并使用 flyway for postgres?如果是的话怎么办?【英文标题】:is it possible to create db using script in springboot app with flyway for postgres? if yes how? 【发布时间】:2020-11-17 06:59:34 【问题描述】:

这是我第一次使用flyway。我的应用程序是带有用于数据库版本控制和 postgres 作为数据库的 flyway 的 spring boot。 我已经成功编写了一个脚本 V1_1_0__create_schema1.sql 用于编写模式:

Create schema if not exists schema1;

以及创建表 V1_1_1__create_table.sql 用于写入表的第二个脚本:

create table if not exists schema1.table1( id int NOT NULL, name varchar(255), CONSTRAINT table1_pkey PRIMARY KEY (id) );

现在我想用 flyway 约定编写用于创建数据库的 sql 脚本。我该怎么做?感谢您的帮助!

【问题讨论】:

【参考方案1】:

是否可以使用带有flyway的springboot应用程序中的脚本创建数据库 对于 postgres?

当然是:D!

如果是怎么办?

首先,您需要在项目中添加 flyway,作为依赖项(如果您使用 spring 依赖管理或 BOM,则没有版本):

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

然后 spring Boot 会自动检测 Flyway 并与其 DataSource 自动连接,并在启动时调用它。

默认情况下,flyway 在src/main/resources/db/migration 文件夹中查找迁移脚本,这些脚本必须遵循V[version_number]__[Description_of_script].sql 的命名约定,请注意您有两个下划线,例如您可以有V1__init_db.sql

然后您可以在 application.properties 中配置数据源属性,以使用以下方式激活 flyway:

spring.flyway.enabled=true
spring.flyway.baseline-on-migrate=true
#if you have multiple schemas
spring.flyway.schemas=schema1,schema2

您可以查看这些资源以了解更多详细信息,那里有很多可供探索的选项:

database-migrations-with-flyway。 build-a-spring-boot-app-with-flyway-and-postgres。 spring_boot_flyway_database

【讨论】:

以上是关于是否可以在 Spring Boot 应用程序中使用脚本创建数据库,并使用 flyway for postgres?如果是的话怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Spring Boot 中运行两个使用 spring.jpa.generate-ddl 填充的嵌入式数据库?

是否可以在 Spring Boot 应用程序中使用脚本创建数据库,并使用 flyway for postgres?如果是的话怎么办?

是否可以在 Spring Boot 中使用 @Transactional 和 kotlin 协程?

Spring Boot快速入门

是否有任何选项可以在 Spring Boot 中使用 Jackson 为 java.time.* 包注册一次 Serializer/Deserializer?

在 swagger UI 中生成示例示例(在 Spring boot 项目中)