
مكتبة Go وواجهة سطر أوامر لإدارة ترحيلات مخطط قاعدة البيانات مع دعم PostgreSQL وMySQL وSQLite وCassandra، بما في ذلك سير عمل الترحيل للأعلى/للأسفل.
أداة مساعدة للترحيل مكتوبة بلغة Go. استخدمها في كود Golang الحالي لديك أو قم بتشغيل الأوامر عبر واجهة سطر الأوامر (CLI).
GoCode import github.com/mattes/migrate/migrate
CLI go get -u github.com/mattes/migrate
الميزات
^C.migrate package.تحتاج إلى سائق آخر؟ فقط قم بتنفيذ واجهة السائق وافتح طلب سحب (PR).
# التثبيت
go get github.com/mattes/migrate
# إنشاء ملف ترحيل جديد في المسار
migrate -url driver://url -path ./migrations create migration_file_xyz
# تطبيق جميع عمليات الترحيل المتاحة
migrate -url driver://url -path ./migrations up
# التراجع عن جميع عمليات الترحيل
migrate -url driver://url -path ./migrations down
# التراجع عن أحدث عملية ترحيل تم تطبيقها، ثم تشغيلها مرة أخرى.
migrate -url driver://url -path ./migrations redo
# تشغيل أمر down ثم أمر up
migrate -url driver://url -path ./migrations reset
# عرض إصدار الترحيل الحالي
migrate -url driver://url -path ./migrations version
# تطبيق عمليات الترحيل n التالية
migrate -url driver://url -path ./migrations migrate +1
migrate -url driver://url -path ./migrations migrate +2
migrate -url driver://url -path ./migrations migrate +n
# التراجع عن عمليات الترحيل n السابقة
migrate -url driver://url -path ./migrations migrate -1
migrate -url driver://url -path ./migrations migrate -2
migrate -url driver://url -path ./migrations migrate -n
# الانتقال إلى ترحيل محدد
migrate -url driver://url -path ./migrations goto 1
migrate -url driver://url -path ./migrations goto 10
migrate -url driver://url -path ./migrations goto v
انظر GoDoc هنا: http://godoc.org/github.com/mattes/migrate/migrate
import "github.com/mattes/migrate/migrate"
// استيراد أي سائقين مطلوبين حتى يتم تسجيلهم وتوفرهم
import _ "github.com/mattes/migrate/driver/mysql"
// استخدام الإصدارات المتزامنة من دوال الترحيل ...
allErrors, ok := migrate.UpSync("driver://url", "./path")
if !ok {
fmt.Println("أوه لا ...")
// قم بفعل شيء مع شريحة allErrors
}
// استخدام الإصدار غير المتزامن من دوال الترحيل ...
pipe := migrate.NewPipe()
go migrate.Up(pipe, "driver://url", "./path")
// pipe هو في الأساس مجرد قناة (channel)
// اكتب مستمع القناة الخاص بك. انظر writePipe() في main.go كمثال.
تنسيق ملفات الترحيل يبدو هكذا:
001_initial_plan_to_do_sth.up.sql # تعليمات ترحيل up
001_initial_plan_to_do_sth.down.sql # تعليمات ترحيل down
002_xxx.up.sql
002_xxx.down.sql
...
لماذا ملفان؟ بهذه الطريقة يمكنك الاستمرار في فعل شيء مثل
psql -f ./db/migrations/001_initial_plan_to_do_sth.up.sql ولا توجد
حاجة لأي لغة ترميز مخصصة لتقسيم عمليات الترحيل up و down. يرجى ملاحظة
أن امتداد الملف يعتمد على السائق.