【问题标题】:Flyway: reusing sql fileFlyway:重用sql文件
【发布时间】:2021-07-09 23:23:05
【问题描述】:

我刚开始使用命令行路由研究 Flyway,想知道是否可以重用 .sql 文件?

例子:

我有一个名为 V1__Create_user.sql 的文件

CREATE USER ${user_name} WITH PASSWORD '${pass}';                                                                                                                                                                                                                                    
GRANT readaccess TO ${user_name};

这个sql文件好像只能用一次,就是在命令下面运行的时候

flyway -placeholders.userName=test_user -placeholders.pass=test migrate

当我为占位符使用不同的用户名和密码再次运行上述命令时,没有进行任何更改。

所以,我想知道是否有办法重用该 sql 文件,而不是一遍又一遍地生成包含相同 sql 查询的新 sql 文件?

【问题讨论】:

    标签: flyway


    【解决方案1】:

    Flyway 的工作方式是按照您提供的顺序运行您提供的脚本。它在数据库中放置一个标记,显示它已经运行了哪些脚本。然后,当您重新运行它时,它只会运行它尚未运行的脚本:运行 V2__Whatever、V2.2__Something 等。

    您不能返回并修改现有脚本并期望该工具能够识别它已更改然后重新运行它。即使该脚本使用占位符。

    这不包括每次使用 Flyway 部署时都会运行的可重复脚本(例如视图定义)。如果必须,您可以制作一个可重复的脚本并以这种方式运行。但是,只要每次部署都是增量的,从 1 到 2、2 到 3、3 到 4,这将起作用。只要您需要从版本 1 部署到 4,就不能传入多个命令。

    由于我所知道的关系数据存储中的每个 SQL 实例都是一种声明性语言,因此处理它的最佳方法就是这样使用它。是的,这意味着像 CREATE USER 这样的东西被反复使用。但是,由于创建的每个 USER 都是独一无二的,所以它就是这样工作的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-29
      • 2017-01-07
      • 2015-07-17
      • 1970-01-01
      • 2018-09-28
      • 2017-12-13
      • 2021-10-04
      • 2019-12-24
      相关资源
      最近更新 更多