Flyway 与 Git 集成并连接到 Snowflake
Posted
技术标签:
【中文标题】Flyway 与 Git 集成并连接到 Snowflake【英文标题】:Flyway integration with Git and connecting to Snowflake 【发布时间】:2019-02-22 20:12:46 【问题描述】:我们有一个包含多个表的现有数据库,每次我们对某个表的架构进行任何更改时,我们都必须运行一些手动脚本以避免任何数据丢失。 我们正在寻找可以与我们的 Git 存储库集成并为数据库生成更新的 DDL 的软件。
我遇到了 Flyway 数据库迁移工具,并在阅读文档时遇到了关于与代码仓库集成的问题,其中推送了对数据库架构的更改。
Flyway 也适用于 Snowflake。如果是,我可以在哪里添加所需的 jdbc 驱动程序以连接到数据库,以及用于 Snowflake 连接的 .conf 文件是什么。
【问题讨论】:
【参考方案1】:目前官方 Flyway 不适用于 Snowflake(如您所见 https://github.com/flyway/flyway/pull/2274)。根据这个讨论,似乎存在一个与 Snowflake 兼容的分支,但是我不建议在没有大量检查的情况下在生产系统上使用它,但如果你真的需要它可能值得一看。
关于 Flyway 与 Git 的集成,您可以通过拉取 Flyway Docker 映像 (https://github.com/flyway/flyway-docker) 将 Flyway 集成到您的 CI 流程中 - 或者如果您决定使用与 Snowflake 兼容的分支,则使用您自己的映像 - 并运行针对您的目标数据库迁移命令。
【讨论】:
感谢您的回复。 Flyway 与其他数据库的兼容性很好。我们正在研究选项。期待您添加雪花选项 不幸的是,我不是处理此 Pull Request 的人 :) 但我的团队遇到了与您完全相同的问题。我认为您可以检查 Liquibase 和 Sqitch!【参考方案2】:只是为了记录,这显然已经改变了。
现在支持 Snowflake
https://flywaydb.org/documentation/database/snowflake
虽然当前版本(flyway 6.2.0)会抛出警告...
警告:建议升级 Flyway:Snowflake 4.2 比这更新 Flyway 版本和支持尚未经过测试。
【讨论】:
我使用flyway 6.4.2。我收到此错误:org.flywaydb.core.api.FlywayException: Unable to instantiate JDBC driver: net.snowflake
。我尝试将驱动程序更改为org.snowflake
,我得到了同样的错误。
我们已经使用6.2.0几个月了,没有遇到任何问题...【参考方案3】:
我使用 flyway 6.4.2 并在 pom 文件中使用此配置:
<execution>
<id>my_sf_migration</id>
<phase>compile</phase>
<goals>
<goal>migrate</goal>
</goals>
<configuration>
<!--This is where I got the driver wrong, that is why it was not working -->
<driver>net.snowflake.client.jdbc.SnowflakeDriver</driver>
<configFiles>
<configFile>./conf/flyway_sf.conf</configFile>
</configFiles>
</configuration>
</execution>
【讨论】:
以上是关于Flyway 与 Git 集成并连接到 Snowflake的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 集成 Flyway,数据库也能做版本控制,太牛逼了!
Flyway 与 Spring Boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本