데이터베이스 마이그레이션이 작성되었습니다. CLI 또는 가져 오기로 사용하십시오.
매트/이주에서 포크
데이터베이스 드라이버는 마이그레이션을 실행합니다. 새 데이터베이스를 추가 하시겠습니까?
데이터베이스 연결 문자열은 URL을 통해 지정됩니다. URL 형식은 드라이버에 종속적이지만 일반적으로 dbdriver://username:password@host:port/dbname?param1=true¶m2=false
예약 된 URL 문자는 탈출해야합니다. % 문자도 탈출해야합니다
명시 적으로 다음 캐릭터는 탈출해야합니다. ! , # , $ , % , %, & , ' , ( , ) , * , + , / , : , ; , = ? , @ , [ , ]
URL 인코더를 통해 항상 DB Connection URL (예 : 사용자 이름, 비밀번호 등)의 URL 부분을 실행하는 것이 가장 쉽습니다. 아래의 Python 스 니펫 예를 참조하십시오.
$ 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
$소스 드라이버는 로컬 또는 원격 소스에서 마이그레이션을 읽습니다. 새 소스를 추가 하시겠습니까?
CLI 문서
$ migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2$ docker run -v {{ migration dir }}:/migrations --network host migrate/migrate
-path=/migrations/ -database postgres://localhost:5432/database up 2GracefulStop chan bool 통해 우아한 정지를 지원합니다.io.Reader 스트림을 사용합니다.문서화
import (
"github.com/golang-migrate/migrate/v4"
_ "github.com/golang-migrate/migrate/v4/database/postgres"
_ "github.com/golang-migrate/migrate/v4/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 )
}기존 데이터베이스 클라이언트를 사용하고 싶으십니까?
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"
)
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 . Up () // or m.Steps(2) if you want to explicitly set the number of migrations to run
}시작하기 시작하십시오
(앞으로 더 많은 튜토리얼)
각 마이그레이션에는 위아래로 마이그레이션이 있습니다. 왜?
1481574547_create_users_table.up.sql
1481574547_create_users_table.down.sql모범 사례 : 마이그레이션 작성 방법.
MigradAptor를 확인하십시오. 참고 : DIGRADAPTOR는이 프로젝트에서 제휴하거나 지원되지 않습니다.
| 버전 | 지원? | 수입 | 메모 |
|---|---|---|---|
| 주인 | ✅ | import "github.com/golang-migrate/migrate/v4" | 새로운 기능과 버그 수정이 먼저 여기에 도착합니다 |
| v4 | ✅ | import "github.com/golang-migrate/migrate/v4" | 안정적인 릴리스에 사용됩니다 |
| v3 | import "github.com/golang-migrate/migrate" (패키지 관리자 포함) 또는 import "gopkg.in/golang-migrate/migrate.v3" | 사용하지 마십시오 - 더 이상 지원되지 않습니다 |
예, 제발! Makefile 친구입니다. 개발 가이드를 읽으십시오.
FAQ도 살펴보십시오.
대안을 찾고 계십니까? https://awesome-go.com/#database.