All Projects → golang-migrate → Migrate

golang-migrate / Migrate

Licence: other
Database migrations. CLI and Golang library.

Programming Languages

31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Migrate

Database migrations. CLI and Golang library.
Stars: ✭ 2,315 (-69.98%)
Mutual labels:  aws-s3, google-cloud-storage, sql, migration, migrations, database, mysql, mongodb, sqlite, postgres, neo4j, cassandra, mariadb, databases, spanner, google-cloud-spanner
A database migration tool. Supports SQL migrations and Go functions.
Stars: ✭ 2,112 (-72.61%)
Mutual labels:  sql, migration, database, mysql, sqlite, postgres, migrations
Database migration tool for .NET and .NET Core projects. Inspired by Flyway.
Stars: ✭ 477 (-93.81%)
Mutual labels:  sql, migration, database, mysql, sqlite, cassandra, mariadb
Ebean ORM
Stars: ✭ 1,172 (-84.8%)
Mutual labels:  sql, database, mysql, sqlite, postgres, mariadb
🏋️ dbbench is a simple database benchmarking tool which supports several databases and own scripts
Stars: ✭ 52 (-99.33%)
Mutual labels:  hacktoberfest, database, mysql, sqlite, cassandra, mariadb
node.js database migration tool
Stars: ✭ 53 (-99.31%)
Mutual labels:  migration, database, mysql, mongodb, sqlite, postgres
SQL builder and query library for golang
Stars: ✭ 984 (-87.24%)
Mutual labels:  sql, database, mysql, sqlite, postgres
Database CRUD Application Built on Electron | MySQL, Postgres, SQLite
Stars: ✭ 1,267 (-83.57%)
Mutual labels:  sql, database, mysql, sqlite, postgres
🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, SQLite, and MSSQL.
Stars: ✭ 5,039 (-34.66%)
Mutual labels:  sql, mysql, sqlite, postgres, mariadb
Linq to database provider.
Stars: ✭ 2,211 (-71.33%)
Mutual labels:  sql, database, mysql, sqlite, mariadb
Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite & MongoDB (Preview)
Stars: ✭ 18,168 (+135.58%)
Mutual labels:  database, mysql, mariadb, postgres, sqlite
TypeScript clients for databases that prevent SQL Injection
Stars: ✭ 154 (-98%)
Mutual labels:  sql, mysql, sqlite, postgres, databases
Type safe SQL builder with code generation and automatic query result data mapping
Stars: ✭ 373 (-95.16%)
Mutual labels:  sql, database, mysql, postgres, mariadb
Node Pg Migrate
Node.js database migration management for Postgresql
Stars: ✭ 838 (-89.13%)
Mutual labels:  sql, migration, migrations, database, postgres
Data access layer for PostgreSQL, CockroachDB, MySQL, SQLite and MongoDB with ORM-like features.
Stars: ✭ 2,832 (-63.28%)
Mutual labels:  sql, database, mysql, mongodb, sqlite
Main Liquibase Source
Stars: ✭ 2,910 (-62.27%)
Mutual labels:  hacktoberfest, sql, database, mysql, mariadb
Fluent migrations framework for .NET
Stars: ✭ 2,636 (-65.82%)
Mutual labels:  sql, migration, database, mysql, postgres
MySQL, SQLite, MariaDB, PostgreSQL and MongoDB ORM for Deno
Stars: ✭ 498 (-93.54%)
Mutual labels:  database, mysql, mongodb, sqlite, mariadb
Node Sqlite
SQLite client for Node.js applications with SQL-based migrations API written in Typescript
Stars: ✭ 642 (-91.68%)
Mutual labels:  sql, migration, migrations, database, sqlite
An easy-to-use and promise-based multi SQL dialects ORM tool for Node.js
Stars: ✭ 25,422 (+229.64%)
Mutual labels:  sql, mysql, sqlite, mariadb

GitHub Workflow Status (branch) GoDoc Coverage Status Docker Pulls Supported Go Versions GitHub Release Go Report Card


Database migrations written in Go. Use as CLI or import as library.

  • Migrate reads migrations from sources and applies them in correct order to a database.
  • Drivers are "dumb", migrate glues everything together and makes sure the logic is bulletproof. (Keeps the drivers lightweight, too.)
  • Database drivers don't assume things or try to correct user input. When in doubt, fail.

Forked from mattes/migrate


Database drivers run migrations. Add a new database?

Database URLs

Database connection strings are specified via URLs. The URL format is driver dependent but generally has the form: dbdriver://username:password@host:port/dbname?param1=true&param2=false

Any reserved URL characters need to be escaped. Note, the % character also needs to be escaped

Explicitly, the following characters need to be escaped: !, #, $, %, &, ', (, ), *, +, ,, /, :, ;, =, ?, @, [, ]

It's easiest to always run the URL parts of your DB connection URL (e.g. username, password, etc) through an URL encoder. See the example Python snippets below:

$ python3 -c 'import urllib.parse; print(urllib.parse.quote(input("String to encode: "), ""))'
String to encode: FAKEpassword!#$%&'()*+,/:;=?@[]
$ python2 -c 'import urllib; print urllib.quote(raw_input("String to encode: "), "")'
String to encode: FAKEpassword!#$%&'()*+,/:;=?@[]

Migration Sources

Source drivers read migrations from local or remote sources. Add a new source?

CLI usage

  • Simple wrapper around this library.
  • Handles ctrl+c (SIGINT) gracefully.
  • No config search paths, no config files, no magic ENV var injections.

CLI Documentation

Basic usage

$ migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2

Docker usage

$ docker run -v {{ migration dir }}:/migrations --network host migrate/migrate
    -path=/migrations/ -database postgres://localhost:5432/database up 2

Use in your Go project

  • API is stable and frozen for this release (v3 & v4).
  • Uses Go modules to manage dependencies.
  • To help prevent database corruptions, it supports graceful stops via GracefulStop chan bool.
  • Bring your own logger.
  • Uses io.Reader streams internally for low memory overhead.
  • Thread-safe and no goroutine leaks.

Go Documentation

import (
    _ ""
    _ ""

func main() {
    m, err := migrate.New(

Want to use an existing database client?

import (
    _ ""
    _ ""

func main() {
    db, err := sql.Open("postgres", "postgres://localhost:5432/database?sslmode=enable")
    driver, err := postgres.WithInstance(db, &postgres.Config{})
    m, err := migrate.NewWithDatabaseInstance(
        "postgres", driver)
    m.Up() // or m.Step(2) if you want to explicitly set the number of migrations to run

Getting started

Go to getting started


(more tutorials to come)

Migration files

Each migration has an up and down migration. Why?


Best practices: How to write migrations.


Version Supported? Import Notes
master import "" New features and bug fixes arrive here first
v4 import "" Used for stable releases
v3 import "" (with package manager) or import "" (not recommended) DO NOT USE - No longer supported

Development and Contributing

Yes, please! Makefile is your friend, read the development guide.

Also have a look at the FAQ.

Looking for alternatives?

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].