This package allows you to run migrations on your PostgreSQL database using Golang Postgres client. See example for details.
You need to create database pg_migrations_example
before running this example.
> psql -c "CREATE DATABASE pg_migrations_example"
CREATE DATABASE
> go run *.go version
version is 0
> go run *.go
creating table my_table...
adding id column...
seeding my_table...
migrated from version 0 to 3
> go run *.go version
version is 3
> go run *.go reset
truncating my_table...
dropping id column...
dropping table my_table...
migrated from version 3 to 0
> go run *.go
creating table my_table...
adding id column...
seeding my_table...
migrated from version 0 to 3
> go run *.go down
truncating my_table...
migrated from version 3 to 2
> go run *.go version
version is 2
> go run *.go set_version 1
migrated from version 2 to 1
> go run *.go create add email to users
created migration 4_add_email_to_users.go
If you'd want to wrap the whole run in a big transaction, which may be the case if you have multi-statement migrations, the code in main.go
should be slightly modified:
var oldVersion, newVersion int64
err := db.RunInTransaction(func(tx *pg.Tx) (err error) {
oldVersion, newVersion, err = migrations.Run(tx, flag.Args()...)
return
})
if err != nil {
exitf(err.Error())
}