Database migrations. CLI and Golang library.
Go to file
mattes d263522f7e update travis to run tests not in parallel 2014-08-11 03:57:29 +02:00
driver initial 2014-08-11 03:42:57 +02:00
file initial 2014-08-11 03:42:57 +02:00
migrate update files to not use searchpath anymore 2014-08-11 03:54:07 +02:00
.gitignore initial 2014-08-11 03:42:57 +02:00
.travis.yml update travis to run tests not in parallel 2014-08-11 03:57:29 +02:00
README.md Update Readme 2014-08-11 03:55:10 +02:00
main.go update files to not use searchpath anymore 2014-08-11 03:54:07 +02:00

README.md

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