我有一个数据库,其中包含经常需要修改的视图和存储过程。我希望能够将这些视图存储在另一个目录中,并在我编写迁移时包含sql代码。基本上,dir结构是
views/
my_view.sql
functions/
my_func.sql
sql/
V1__add_view.sql
V1__add_view.sql类似于
\i views/my_view.sql
这目前在psql中有效,但在飞行方式迁移中不起作用。这样做的好处是,当我们想要进行更改时,我们可以就地修改视图,并将其包含在下一次迁移中。它还将消除视图迁移中的大量复制粘贴。
是否有任何方法可以在快速迁移中包含外部SQL脚本?
听起来您可以使用可重复的迁移来完成这个任务。
我认为flyway不像\i语句那样支持调用外部脚本。如果您想尝试导入途径,您可以为脚本使用占位符。
使用您的示例,在 sql 迁移文件中使用 占位符
${my_view}
当您调用 flyway 时,使用视图/my_view.sql中的文本定义占位符替换值。我不确定你用什么来称呼飞行路线,但在蚂蚁中,它会是这样的
<loadfile property="flyway.placeholder" srcfile="views\my_view.sql"/>
<flyway:migrate>
<locations>
<location path="database/migrations"/>
</locations>
<placeholders>
<placeholder name="my_view" value="${flyway.placeholder}"/>
</placeholders>
</flyway:migrate>
文件中还有一个例子:https://flywaydb.org/documentation/ant/migrate
我们使用Liquibase,现在在新项目中,我们必须使用Flyway。在liquibase中,迁移顺序在xml文件中,所以您可以指定什么是第一次迁移,什么是第二次迁移,它不依赖于名称。 所以,当一些开发人员添加新的迁移时,如果之前有人推动了新的迁移,那么他将在Git中遇到冲突,并且必须修复顺序。 这是如何在Flyway中实现的?如果并行添加迁移,如何控制顺序?
在类路径中:/db。迁移有迁移但flyway没有看到这一点,而是爱上了msg 2022-05-02 17:28:07.993INFO 45296 --- [ restartedMain]c. c. c. ConfigServiceProperty tySourceLocator:从服务器获取配置,地址为:http://localhost:8888/story2022-05-02 17:28:08.
我为命令行java迁移执行了以下步骤: < li >创建java文件 当我执行迁移逗号时,它会像 警告:无法解析位置类路径:db/迁移 请查看下面的附件图片,它实际上是罐子。我已经提取了更多信息。
目前,我们公司通过手动创建、分发和运行必要的SQL脚本来处理所有数据库模式更改。显然,这会导致各种机器偶尔更新和稀疏更新的问题。 我正在研究更现代的方法来解决这个问题,而Flyway现在是主要的候选人(尽管如果可以提出令人信服的论据,我们仍然愿意使用Liquibase)。 正常流程很简单,和宣传的一样简单,但是我们不知道如何正确处理冲突的迁移脚本。例如,不同个人分支(A和B)上的2名开发人员在不同
我们有一个用于填充表的迁移,但是由于我们刚刚开始开发,因此此数据经常更改。因此,我们想知道我们是否可以更新这样的迁移脚本,并要求flyway回滚它(以前的版本)并再次执行它(新版本)。事实上,如果这是可能的,也就是说,如果迁移是可变的,那么我们想象需要回滚并再次执行每个后续迁移,以确保它们没有受到影响。我们认为,这可以避免移徙在发展过程中的扩散。
我更改了一个错误的flyway脚本,这使我的迁移处于错误状态(我有5个脚本版本,但当我运行我的应用程序时,它从第4个开始,并得到一个错误“反应已经存在”)。我尝试从flyway cli使用clean,但它没有完全解决问题...此外,当我尝试将我的分支推送到git时,CI/CD管道将无法进行迁移。既然我在开发环境中,全部删除迁移脚本会是一个可怕的想法吗?删除所有脚本是否允许我在开发环境中“从头开始”