migrate/README.md

2.2 KiB

migrate

Build Status

migrate can be used as CLI or can be imported into your existing Go code.

Available Drivers

Need another driver? Just implement the Driver interface and open a PR.

Usage from Terminal

# install
go get github.com/mattes/migrate

# create new migration
migrate -url="postgres://user@host:port/database" -path=./db/migrations create

# apply all *up* migrations
migrate -url="postgres://user@host:port/database" -path=./db/migrations up

# apply all *down* migrations
migrate -url="postgres://user@host:port/database" -path=./db/migrations down

# roll back the most recently applied migration, then run it again.
migrate -url="postgres://user@host:port/database" -path=./db/migrations redo

# down and up again
migrate -url="postgres://user@host:port/database" -path=./db/migrations reset

# show current migration version
migrate -url="postgres://user@host:port/database" -path=./db/migrations version

# apply the next n migrations
migrate -url="postgres://user@host:port/database" -path=./db/migrations migrate +1
migrate -url="postgres://user@host:port/database" -path=./db/migrations migrate +2
migrate -url="postgres://user@host:port/database" -path=./db/migrations migrate +n

# apply the *down* migration of the current version 
# and the previous n-1 migrations
migrate -url="postgres://user@host:port/database" -path=./db/migrations migrate -1
migrate -url="postgres://user@host:port/database" -path=./db/migrations migrate -2
migrate -url="postgres://user@host:port/database" -path=./db/migrations migrate -n

Usage from within Go

See http://godoc.org/github.com/mattes/migrate/migrate

import "github.com/mattes/migrate/migrate"


migrate.Up("postgres://user@host:port/database", "./db/migrations")
// ... 
// ... 

Migrations format

./db/migrations/001_initial.up.sql
./db/migrations/001_initial.down.sql

Why two files? This way you could do sth like psql -f ./db/migrations/001_initial.up.sql.

Credits