How to bind migrations with executable

后端 未结 3 1671
伪装坚强ぢ
伪装坚强ぢ 2021-01-21 01:22

I have a Go project using goose for Mysql migrations. I would like to bind the migrations to the package executable so that the executable can be deployed and used independently

3条回答
  •  盖世英雄少女心
    2021-01-21 02:07

    If you're already using Goose, one option would be to write the migrations in Go instead of SQL. Based on the Go migrations example in the Goose repo, when you build the goose binary here, it will bundle all the *.go ones into the binary.

    This was the output after I built the example and removed all files except the binary itself. The Go-based migration was embedded:

    2017/10/31 11:22:31     Applied At                  Migration
    2017/10/31 11:22:31     =======================================
    2017/10/31 11:22:31     Mon Jun 19 21:56:00 2017 -- 00002_rename_root.go
    

    If you're looking to use SQL-based migrations but don't want to take on additional dependencies, you could embed your SQL-based migrations into *.go files as string constants, then, starting from the go-migrations example, add an init phase to main.go that writes them out to the current directory before proceeding.

提交回复
热议问题