استيراد قاعدة البيانات القديمة إلى أحدث إصدار

شكراً على ردك، ولكن مجرد إزالة الاستطلاعات ليس حلاً للسجلات المكررة. أفترض أن الاستيراد من phpbb3 في وقت مبكر كان غير صحيح وأنشأ تلك السجلات. إنها صالحة، ولكن لديها فقط معرفات UUID مكررة لأن المستورد الأصلي لم يتحقق من ذلك.

على أي حال، الحل لأي شخص يصادف هذه المشكلة هو القيام بما يلي:

  1. تغيير السجلات الإشكالية في جدول post_custom_fields لإزاحتها. من الأفضل القيام بذلك بدلاً من الانتظار لبضع دقائق لإعادة البناء لرؤية خطأ آخر.

update post_custom_fields set name = 'polls' where name = 'polls_bak';
update post_custom_fields set name = 'polls-votes' where name = 'polls-votes_bak';

  1. تشغيل إعادة بناء التطبيق، أو التحديث، أو أي شيء يحاول المستخدم القيام به.

  2. الاتصال بالحاوية قيد التشغيل مباشرة بعد بناء كل شيء وبدء تشغيله.

  3. تغيير الاستطلاعات مرة أخرى إلى التسمية الأصلية:

update post_custom_fields set name = 'polls'_bak' where name = 'polls';
update post_custom_fields set name = 'polls-votes_bak'' where name = 'polls-votes';

  1. تشغيل الترحيل الذي يسبب المشكلة يدوياً من داخل حاوية التطبيق، مع ملاحظة أن VERSION هو الرقم الموجود في اسم ملف الترحيل.

أولاً، قم بإلغاء تشغيل الترحيل، وهذا لن يفعل شيئاً لأن طريقة down لا تفعل شيئاً لقاعدة البيانات:

rake db:migrate:down VERSION=20180820080623

قم بتشغيل الترحيل وابحث عن الخطأ الأول:

rake db:migrate:up VERSION=20180820080623

  1. ابحث في الجدول باستخدام واجهة رسومية لقاعدة البيانات لتسهيل التحرير لمعرف UUID الذي يسبب المشكلة:

select from post_custom_fields where value like '%your_UUID%';

  1. الآن الجزء الصعب. معرف UUID هو معرف إجابة/خيار الاستطلاع، لذا ما عليك فعله هو تغيير معرف UUID هذا في الصف poll، على سبيل المثال من 731ef6901e968fc3f4e785fcb9e9abe8 إلى 731ef6901e968fc3f4e785fcb9e9abe9. من غير المرجح جداً أن تجد واحداً آخر مثله في نظامك. ولكن بعد القيام بذلك، تحتاج أيضاً إلى العثور على المعرف المقابل في poll-votes وتغييره إلى المعرف الجديد الخاص بك. بهذه الطريقة، لن تفقد أي أصوات أو إجابات.

  2. قم بتشغيل الترحيل مرة أخرى وابحث عن الخطأ التالي:

rake db:migrate:up VERSION=20180820080623

  1. كرر هذه العملية حتى يكتمل الترحيل وتكون قد نقلت جميع الاستطلاعات إلى جداولك الجديدة.

أنا مستاء من عدم قيام أي شخص بالرد حتى لشرح ما هو معرف UUID هذا وما يشير إليه. أعرف أنه مفتوح المصدر وأعرف أنه مرت سنوات منذ أن تم الالتزام به، أنا لا أشتكي ولكن بعض المساعدة من الأشخاص الذين يقومون فعلياً بالالتزام في المستودع الرسمي ستكون موضع تقدير كبير.

تم حل المشكلة، لذا أيام سعيدة.

شكراً!