事象
golang-migrateを使ってマイグレーションを実行するためにmigrate.go
を作っているときに発生。
package main
import (
"log"
"github.com/golang-migrate/migrate/v4"
_ "github.com/golang-migrate/migrate/v4/database/postgres"
_ "github.com/golang-migrate/migrate/v4/source/file"
)
func main() {
m, err := migrate.New(
"file://db/migrations",
"postgres://postgres:example@db:5432/example?sslmode=disable")
if err != nil {
log.Fatal(err)
}
// modify for Down
if err := m.Up(); err != nil {
log.Fatal(err)
}
}
原因と対応
マイグレーションに失敗したけど、スキーマのバージョンだけが上がっているのが原因。
マイグレーションのバージョンを管理している schema_migrations
のデータを削除すれば直る。
参考
migrate/TUTORIAL.md at master · golang-migrate/migrate (github.com)