![](/img/trans.png)
[英]How to run flyway clean and migration silently without don't mess on screen in Java / Clojure?
[英]Clojure: How to run complex DB migration in production?
想象一下,作為新版本發布到生產環境的一部分,您有一項任務要執行復雜的數據庫遷移,您通常如何在 Clojure 項目中執行此操作?
一個新的“大”版本的例子,遷移:
foo
表)您將如何以自動化方式進行第二次遷移? 必須執行所有 3 個遷移才能使新版本成功。
看起來Flyway DB 有 Java 遷移,看起來正是需要的,但有什么方法可以從 Clojure 使用它?
也許可以添加另一個.clj
文件以及其他.sql
遷移,Flyway 會選擇它嗎?
對於 Clojure 中看似非常常見的任務,我沒有任何示例,只有簡單的 SQL 查詢,我有點驚訝。
定義基於代碼的遷移
通過將 .edn 文件添加到包含命名空間和要運行的向上/向下函數的遷移目錄來創建基於代碼的遷移,例如 resources/migrations/20170331141500-import-users.edn:
{:ns app.migrations.import-users
:up-fn migrate-up
:down-fn migrate-down}
然后,在 src/app/migrations/import_users.clj 中:
(ns app.migrations.import-users)
(defn migrate-up [config]
;; do stuff here
)
(defn migrate-down [config]
;; maybe undo stuff here
)
向上和向下遷移函數都應該接受一個參數,即傳遞給 Migratus 的配置 map(因此您的遷移可以配置)。 您可以通過在 EDN 文件中設置:up-fn 或 down-fn 為 nil 來省略向上或向下遷移。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.