commit | c156f5f3a150ca524144c7eb3755d7ce48ba04bb | [log] [tgz] |
---|---|---|
author | Jason Hutchinson <jhutchinson@wehco.com> | Thu Nov 02 21:59:26 2017 |
committer | Jason Hutchinson <jhutchinson@wehco.com> | Thu Nov 02 21:59:26 2017 |
tree | ab471186151cd0991e240a5d47b0def2a53d3101 | |
parent | 69472d5f5cdca0fb2766d8d86f63cb2e78e1d869 [diff] |
replace TRUNCATE with DELETE FROM to avoid schema changes within transaction
Database migrations written in Go. Use as CLI or import as library.
Looking for v1?
Database drivers run migrations. Add a new database?
Source drivers read migrations from local or remote sources. Add a new source?
$ brew install migrate --with-postgres $ migrate -database postgres://localhost:5432/database up 2
GracefulStop chan bool
.io.Reader
streams internally for low memory overhead.import (
"github.com/mattes/migrate"
_ "github.com/mattes/migrate/database/postgres"
_ "github.com/mattes/migrate/source/github"
)
func main() {
m, err := migrate.New(
"github://mattes:personal-access-token@mattes/migrate_test",
"postgres://localhost:5432/database?sslmode=enable")
m.Steps(2)
}
Want to use an existing database client?
import (
"database/sql"
_ "github.com/lib/pq"
"github.com/mattes/migrate"
"github.com/mattes/migrate/database/postgres"
_ "github.com/mattes/migrate/source/file"
)
func main() {
db, err := sql.Open("postgres", "postgres://localhost:5432/database?sslmode=enable")
driver, err := postgres.WithInstance(db, &postgres.Config{})
m, err := migrate.NewWithDatabaseInstance(
"file:///migrations",
"postgres", driver)
m.Steps(2)
}
Each migration has an up and down migration. Why?
1481574547_create_users_table.up.sql 1481574547_create_users_table.down.sql
Best practices: How to write migrations.
Yes, please! Makefile
is your friend, read the development guide.
Also have a look at the FAQ.
Looking for alternatives? https://awesome-go.com/#database.