migrate/README.md

2.4 KiB

migrate

Build Status GoDoc

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 add_field_to_table

# 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