【发布时间】:2020-10-16 10:53:18
【问题描述】:
假设您有一项任务要执行复杂的数据库迁移,作为新版本发布到生产环境的一部分,您通常会如何在 Clojure 项目中执行此操作?
一个新的“大”版本迁移示例:
- V1__create_new_tables(简单,只需使用带有 CREATE TABLE 的 vanilla SQL)
-
V2__perform_complex_migration(创建 TABLE foo,遍历另一个表并使用自定义 Clojure 代码用一些数据填充新的
foo表) - V3__do_something_else(简单,可以是另一个简单的 SQL 查询
您将如何以自动化方式进行第二次迁移?必须执行所有 3 次迁移才能使新版本成功。
看起来像 Flyway DB has Java migrations,看起来正是需要的,但有什么方法可以从 Clojure 中使用它?
也许可以添加另一个.clj 文件along with other .sql migrations 并且Flyway 会接收它?
我有点惊讶,我没有任何关于 Clojure 中看似非常常见的任务的示例,只有简单的 SQL 查询。
【问题讨论】:
-
结帐 Migratus。它允许您进行基于普通 sql 和 clojure 代码的迁移。 github.com/yogthos/migratus#code-based-migrations 因此,对于您的 V2 迁移,您将使用基于代码的迁移。
-
@blushrt 谢谢!如果您想发表您的评论作为答案,我会接受它