Skip to content

Repository files navigation

mg

mg is database migrations command.

support databases

  • PostgreSQL
  • MySQL

install

$ go get -u github.com/nissy/mg/cmd/mg

Mac OS X

$ brew tap nissy/mg
$ brew install nissy/mg/mg

config

  • default config read is mg.toml in current directory
  • environment variable support
[postgres-sample]
driver = "postgres"dsn = "postgres://user:password@127.0.0.1:5432/dbname?sslmode=disable"source_dir = [
"./testdata/postgres/migrates",
"./testdata/postgres/seeds"
]
[mysql-sample]
driver = "mysql"dsn = "user:password@tcp(127.0.0.1:3306)/dbname"source_dir = [
"./testdata/mysql/migrates",
"./testdata/mysql/seeds"
]
[environment-variable-sample]
driver = "postgres"dsn = "postgres://user:${PASSWORD}@${HOSTNAME}:5432/dbname?sslmode=disable"source_dir = [
"./testdata/postgres/migrates",
"./testdata/postgres/seeds"
]

options

[option-sample] # section namedriver = "postgres"# database driverdsn = "postgres://user:${PASSWORD}@${HOSTNAME}:5432/dbname?sslmode=disable"# database dsnsource_dir = [ # database source directorys"./testdata/postgres/migrates",
"./testdata/postgres/seeds"
]
up_annotation = "+goose Up"# database up command annotationdown_annotation = "+goose Down"# database down command annotationversion_table = "migration_versions"# versions use table nameversion_start_number = 2019060819341936# version start numberjson_format = true# output message format

source sql

-- @migrate.upCREATETABLEusers (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
name varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
created_at datetime DEFAULT NULL,
updated_at datetime DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;
-- @migrate.downDROPTABLE users;

commands

mg [options] <command> [sections...]

up

apply current version or later.

$ mg up postgres-sample
OK 2019060819341935 to postgres-sample is testdata/postgres/migrates/2019060819341935_users.sql
OK 2019060819341948 to postgres-sample is testdata/postgres/seeds/2019060819341948_users.sql

down

back to previous version.

$ mg down postgres-sample
OK 2019060819341948 to postgres-sample is testdata/postgres/seeds/2019060819341948_users.sql

status

display the current applied status.

$ mg status postgres-sample
Version of postgres-sample:
unapplied:
2019060819341811 testdata/postgres/seeds/2019060819341811_jobs.sql
current:
2019060819341935
apply:
2019060819341948 testdata/postgres/seeds/2019060819341948_users.sql

exit with 1 if there is version that has not been applied.

Error: Section is postgres-sample There are versions that do not apply.
exit status 1

force-up

apply all versions not currently applied.

$ mg force-up postgres-sample
OK 2019060819341811 to postgres-sample is testdata/postgres/seeds/2019060819341811_jobs.sql
OK 2019060819341948 to postgres-sample is testdata/postgres/seeds/2019060819341948_users.sql

help

Usage:
mg [options] <command> [sections...]
Options:
-c string
Set configuration file. (default "mg.toml")
-n string
Create empty source file.
-h bool
This help.
-v bool
Display the version of mg.
Commands:
up Apply current version or later.
force-up Apply all versions not currently applied.
down Back to previous version.
status Display the current applied status.

About

mg is database migrations command.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages