A. 程序開發資料庫版本控制必備 - Flyway
在我們日常產品發布的過程中,代碼的版本控制可以使用git、svn工具實現。對於資料庫每當發布時會出現手動執行sql腳本進行升級資料庫,中間經常出現一些漏寫、錯寫情況,對資料庫的版本與代碼的版本不匹配,導致上線後出現資料庫不同步的問題。flyway就是對資料庫版本進行控制的工具,可以對不同環境的sql進行遷移操作。
flyway 的官網:https://flywaydb.org/
flyway會對每次執行過sql腳本保存到flyway_schema_history中,在資料庫中將保存sql腳本的版本號和對sql生成checksum,當下次執行資料庫遷移的時候就會按照版本號從低往高執行。如果以前的版本號腳本已經執行過就不會執行,如果以前版本的sql腳本已經被修改在執行的過程中則會報錯。對flyway的詳細描述與介紹可以查看flyway的官網。
配置好以上maven組件,在IDEA中就可以看到flyway的快捷插件了。
在插件中undo不能使用,undo為回滾操作。回滾操作只有使用商業版才能使用。
命令行執行
IDEA 工具執行(點擊baseline、migrate)
使用migrate必須開頭是V+版本號+「_ _「+描述.sql
如V1.0.3_20220618__increment.sql
對已經存在資料庫schema結構的資料庫的一種解決方案。實現在非空資料庫新建metaData flyway_schema_history表,並把Migrations應用到該資料庫;也可以在已有表格的資料庫中添加metaData數據表。 註:對已有的數據結構的資料庫來說,必須要進行baseline,才能進行migrate
清楚掉對應資料庫Schema中所有的對象,包括表結構,視圖,存儲過程等,clean操作再dev和test階段很好用,但是在生產環境務必禁用。
執行migrate會在指定文件夾下的sql按照版本號依次執行遷移操作。也就是執行sql腳本,對已經執行過的sql腳本便不再執行。