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的主要内容,如果未能解决你的问题,请参考以下文章

具有 SQL Server 集成安全性的 Flyway

Flyway 与 JPA + OSGi 的集成

Spring Boot 集成 Flyway,数据库也能做版本控制,太牛逼了!

Flyway 与 Spring Boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本

是否可以将 Flyway、Liquibase 等数据库迁移工具与应用程序代码库集成?

Team Foundation Server (TFS)集成Flyway,实现数据库的版本管理