การย้ายฐานข้อมูลที่เขียนใน GO ใช้เป็น CLI หรือนำเข้าเป็นห้องสมุด
แยกจาก Mattes/อพยพ
ไดรเวอร์ฐานข้อมูลเรียกใช้การย้ายถิ่น เพิ่มฐานข้อมูลใหม่?
ระบุสตริงการเชื่อมต่อฐานข้อมูลผ่าน URL รูปแบบ url ขึ้นอยู่กับไดรเวอร์ แต่โดยทั่วไปมีแบบฟอร์ม: dbdriver://username:password@host:port/dbname?param1=true¶m2=false
ต้องหลบหนีอักขระ URL ที่สงวนไว้ หมายเหตุอักขระ % จะต้องหลบหนีด้วย
อย่างชัดเจนตัวละครต่อไปนี้จะต้องหลบหนี: ! , # , $ , % , & , ' , ( , ) , * , + , / , : , ; , = ? , @ , [ , ]
มันง่ายที่สุดที่จะเรียกใช้ส่วน URL ของ URL การเชื่อมต่อ DB ของคุณเสมอ (เช่นชื่อผู้ใช้รหัสผ่าน ฯลฯ ) ผ่านตัวเข้ารหัส 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 boolio.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 หมายเหตุ: Migradaptor ไม่ได้เป็นพันธมิตรหรือสนับสนุนโดยโครงการนี้
| รุ่น | รองรับ? | นำเข้า | หมายเหตุ |
|---|---|---|---|
| ผู้เชี่ยวชาญ | 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 เป็นเพื่อนของคุณอ่านคู่มือการพัฒนา
ดูคำถามที่พบบ่อย
กำลังมองหาทางเลือก? https://awesome-go.com/#database