Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Database migrations. CLI and Golang library.

License

NotificationsYou must be signed in to change notification settings

golang-migrate/migrate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Workflow Status (branch)GoDocCoverage Statuspackagecloud.ioDocker PullsSupported Go VersionsGitHub ReleaseGo Report Card

migrate

Database migrations written in Go. Use asCLI or import aslibrary.

  • Migrate reads migrations fromsourcesand applies them in correct order to adatabase.
  • 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 frommattes/migrate

Databases

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

Anyreserved URL characters need to be escaped. Note, the% character alsoneeds 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!#$%&'()*+,/:;=?@[]FAKEpassword%21%23%24%25%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D$ python2 -c'import urllib; print urllib.quote(raw_input("String to encode: "), "")'String to encode:FAKEpassword!#$%&'()*+,/:;=?@[]FAKEpassword%21%23%24%25%26%27%28%29%2A%2B%2C%2F%3A%3B%3D%3F%40%5B%5D$

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).
  • UsesGo modules to manage dependencies.
  • To help prevent database corruptions, it supports graceful stops viaGracefulStop chan bool.
  • Bring your own logger.
  • Usesio.Reader streams internally for low memory overhead.
  • Thread-safe and no goroutine leaks.

Go Documentation

import ("github.com/golang-migrate/migrate/v4"    _"github.com/golang-migrate/migrate/v4/database/postgres"    _"github.com/golang-migrate/migrate/v4/source/github")funcmain() {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/golang-migrate/migrate/v4""github.com/golang-migrate/migrate/v4/database/postgres"    _"github.com/golang-migrate/migrate/v4/source/file")funcmain() {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.Up()// or m.Steps(2) if you want to explicitly set the number of migrations to run}

Getting started

Go togetting started

Tutorials

(more tutorials to come)

Migration files

Each migration has an up and down migration.Why?

1481574547_create_users_table.up.sql1481574547_create_users_table.down.sql

Best practices: How to write migrations.

Coming from another db migration tool?

Check outmigradaptor.Note: migradaptor is not affiliated or supported by this project

Versions

VersionSupported?ImportNotes
masterimport "github.com/golang-migrate/migrate/v4"New features and bug fixes arrive here first
v4import "github.com/golang-migrate/migrate/v4"Used for stable releases
v3import "github.com/golang-migrate/migrate" (with package manager) orimport "gopkg.in/golang-migrate/migrate.v3" (not recommended)DO NOT USE - No longer supported

Development and Contributing

Yes, please!Makefile is your friend,read thedevelopment guide.

Also have a look at theFAQ.


Looking for alternatives?https://awesome-go.com/#database.


[8]ページ先頭

©2009-2025 Movatter.jp