التخطي إلى المحتوى الرئيسي

ترحيل قاعدة البيانات

عند ترقية قاعدة البيانات، هناك خطر فقدان البيانات، مثل عند حذف حقل قديم. لحسن الحظ، يستخدم Casdoor xorm، الذي يساعد في العديد من مشاكل ترحيل قواعد البيانات. ومع ذلك، لا يزال يتعين التعامل مع بعض ترحيلات المخططات والبيانات يدويًا، مثل عند تغيير اسم حقل.

ملاحظة

راجع وثائق xorm لفهم أفضل لعمليات مخطط xorm.

كيف يعمل

كما ذكرنا سابقًا، xorm غير قادر على التعامل مع تغيير أسماء الحقول. لمعالجة هذا، يوفر xorm حزمة migrate التي يمكن أن تساعد في هذه المشكلة.

للتعامل مع إعادة تسمية الحقول، يمكنك كتابة كود مثل هذا:

migrations := []*migrate.Migration{
{
ID: "CasbinRule--fill ptype field with p",
Migrate: func(tx *xorm.Engine) error {
_, err := tx.Cols("ptype").Update(&xormadapter.CasbinRule{
Ptype: "p",
})
return err
},
Rollback: func(tx *xorm.Engine) error {
return tx.DropTables(&xormadapter.CasbinRule{})
},
},
}
m.Migrate()

هدفنا هو إعادة تسمية p_type إلى ptype. ومع ذلك، نظرًا لأن xorm لا يدعم إعادة تسمية الحقول، يجب علينا اللجوء إلى طريقة أكثر تعقيدًا: تعيين قيمة p_type إلى ptype، ومن ثم حذف حقل p_type.

حقل ID يحدد بشكل فريد الترحيل الذي يتم تنفيذه. بعد تشغيل m.Migrate()، سيتم إضافة قيمة ID إلى جدول الترحيلات في قاعدة البيانات.

عند بدء المشروع مرة أخرى، ستتحقق قاعدة البيانات من وجود حقل ID موجود في الجدول وتمتنع عن تنفيذ أي عمليات مرتبطة بنفس ID.