flyway迁移后运行data.sql文件
Posted
技术标签:
【中文标题】flyway迁移后运行data.sql文件【英文标题】:Run data.sql file after flyway migration 【发布时间】:2020-01-02 15:44:24 【问题描述】:在我的 Spring Boot 项目中,我通过 flyway
维护 sql/query
版本。出于某种原因,我需要加载一些我不想在 flyway 版本上添加的初始数据。对于这些数据,我正在从flyway
脚本创建相关表。因此,要加载初始数据,我必须在 flyway 执行该脚本后运行我的 data.sql
文件。在 flyway 运行其脚本后,我如何确保运行我的 data.sql
文件?
请问有什么建议吗?
【问题讨论】:
问题解决了吗??我也很好奇,因为我不想在 flyway 文件中写入虚拟数据。只是像这样分离架构和数据 你可以试试下面写的解决方案。我从事不同的任务,因此无法尝试该解决方案。最初我做了一些手动任务来完成我的工作 我明白了,谢谢你告诉我:) 【参考方案1】:data.sql
为嵌入式数据库自动运行。
对于 mysql,您需要将以下属性添加到您的 application.properties
文件中:
spring.datasource.initialization-mode=always
编辑:
要在 Flyway 运行迁移后应用,您可以使用 Flyway 的可重复迁移,因为它们总是最后应用。 https://flywaydb.org/documentation/migrations#repeatable-migrations
或者作为另一种选择,您可以使用CommandLineRunner
并以编程方式获取和执行您的 SQL 文件。例如:
import org.springframework.boot.CommandLineRunner;
@Component
public class DatabaseMigration implements CommandLineRunner
@Value("classpath:data.sql")
private Resource dataFile;
@Override
public void run(String... strings)
// read file and execute with JdbcTemplate
// ...
【讨论】:
感谢您的回复!我知道,但我的问题是如何控制运行脚本的顺序,即上述 flyway 脚本和 data.sql 脚本。以上是关于flyway迁移后运行data.sql文件的主要内容,如果未能解决你的问题,请参考以下文章