【專案】Fake Flyway

最近想要導入 flyway 功能來做資料庫腳本的版本控管,但現行的資料庫是 mysql5.6flyway 免費版本並不支援該版本,所以只好依照 flyway 的概念簡單做了一個出來。

大家可以參考我實作的原始碼 Fake Flyway

補充說明: 大家可以看一下官網上 flyway 是怎麼介紹他自己的。

Version control for your database.
Robust schema evolution across all your environments.
With ease, pleasure and plain SQL.

Quick Start

這邊會介紹

  • 如何使用
  • 設計理念
  • 未來展望

如何使用

  • 開始可以先使用 Docker 啟動 mysql 資料庫
1
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
  • 修改 Config
1
2
3
4
5
6
7
{
"db": {
"url": "localhost",
"username": "root",
"password": "123456"
}
}
  • 將要執行的腳本放在 sql 的資料夾中
    如: 2020070801_Greddy_sample_create_database.sql
1
CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

這邊有個地方要注意的就是檔案命名規則為: 日期+流水序號 + 作者 + 描述

設計理念

說明

在一開始的時候會先建立一個 schemadb_migrate,並且建立一張表 migration
每次執行時,會先將 sql 資料夾的檔案與資料表 migration 進行比對,看看是否有執行過。
如果沒有執行過就會進行執行,並且寫入。

流程圖

未來展望

  • 支援更多種 DB 類型
  • 對檔案進行 checksum

Reference

Flyway

今天就介紹到這邊,如有其他疑問請再跟我說。

謝謝您的支持與鼓勵

Ads