[Go] golang-migrate/migrate 快速使用指南


 

1. CLI 用途的安裝 [文檔]

[確保] CLI 工具使用 go 命令安裝時,不應該在 go.mod 所在的目錄中執行命令,也就是先進入到其它非項目目錄內。

 

$ go get -tags 'postgre' github.com/golang-migrate/migrate/v4/cmd/migrate  

postgre 可以替換為適用你當前數據庫的名稱,共有這些支持的 database,未來構建的約束會被移除 [issue].

$ migrate --help 

$ migrate -source file://path/to/migrations -database postgre://localhost:5432/database_name up 2  # 指定文件和數據庫連接

$ migrate -database "$MY_MIGRATE_DATABASE"  # 或者 從環境變量指定數據庫連接的方式,其它方式參見文檔

 

2. 另一種是 非 CLI ,在 go 項目中使用的方式

當前主要版本是 github.com/golang-migrate/migrate/v4

 

3. 快速開始

創建遷移:migrate create -ext sql -dir db/migrations -seq create_users_table

運行遷移:migrate -database YOUR_DATABASE_URL -path PATH_TO_YOUR_MIGRATIONS up

強制指定版本:migrate -path PATH_TO_YOUR_MIGRATIONS -database YOUR_DATABASE_URL force VERSION  (example)

 

另外不同的數據庫所使用的 DSN 會不一樣, 使用不正確的有時候你會得到 error: default addr for network '127.0.0.1:3306' unknown

 

4. 實踐

# 查看包創建的表 schema_migrations 里存的 version 值,比如:2(dirty)

migrate -path db/migrations -database "mysql://user:pass@(127.0.0.1:3306)/mydb?multiStatements=true" version 

 

# 如果 migrate 遇到 error,那么 schema_migrations 表里當前 version 對應的 dirty 字段會標記為 1

# 將指定 version 的 dirty 更新為 0,使用如下命令,force 后面跟的是 version 值:

migrate -path db/migrations -database "mysql://user:pass@(127.0.0.1:3306)/mydb?multiStatements=true" force 2

 

Refer:golang-migrate

Link:https://www.cnblogs.com/farwish/p/14220184.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM