بعد نجاح استخدام أداة الاستيراد في بيئة الاختبار الأولى، أردت الآن استيراد المنتدى القديم مرة أخرى / من جديد إلى بيئة جديدة من المفترض أن تصبح البيئة الفعلية، لكن العملية فشلت هذه المرة.
لقد حصلت على خطأ:
/var/www/discourse/plugins/discourse-migratepassword/plugin.rb:71:in `crypt’: incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError).
يبدو أن هذا يحدث مع المستخدم الثالث، وهذا المستخدم يحتوي على حرف مشكل (Umlaut).
الآن، ما الذي تغير منذ أن كانت العملية ناجحة؟
جهاز افتراضي جديد يعمل بنظام Ubuntu 18.04.3 LTS (كان الجهاز القديم يعمل بنظام 16)
تحديث Discourse (الإصدار الأحدث)
تم تعيين “أسماء مستخدمين يونيكود” مع [äöüßÄÖÜẞ] نظرًا لأن العديد من المستخدمين لديهم أحرف مشكلة في أسماء المستخدمين الخاصة بهم (كانت أول عملية استيراد تتم بدون هذا الإعداد، مما أدى إلى فقدان النقاط فوق الأحرف المشكلة عند استيراد المستخدمين)
تم تثبيت إضافة migratepassword مسبقًا (في المرة الأخيرة تم تثبيتها لاحقًا).
هل لديك أي فكرة عن سبب الفشل؟ أود حقًا نقل المستخدمين دون تغيير أسماء المستخدمين الخاصة بهم.
يبدو أن الأمر يُفعّل خللاً في إضافة migratepassword. إنها تعمل في اختباراتي، لذا لست متأكداً مما يحدث هنا. أنصحك بتعطيل الإضافة أثناء عملية الترحيل. فهي غير ضرورية أصلاً خلال الترحيل.
لقد قمت بتثبيت Discourse محليًا على جهاز Mac الخاص بي باستخدام Docker for Desktop.
أحاول الآن اتباع التعليمات الواردة في هذا الموضوع، لكنني أتوقف لأنني أستخدم Docker، لكن ليس Ubuntu، كما أن البيئة محلية. لذا لا أعرف كيف أواصل
لا يوجد ملف app.yml في مجلد Discourse الخاص بي.
عذرًا، لا أملك أي خبرة في استخدام Mac أو Docker أو إعدادك الخاص. قد تتمكن من اتباع خطوات تقريبية من خلال الاستيراد باستخدام بيئة التطوير… لكنني لا أستطيع تقديم أي دعم لك في هذا الشأن.
أنا أحاول حاليًا إجراء عملية ترحيل من phpBB لأول مرة، وأتساءل عما إذا كان نقل نسخة احتياطية من Discourse لاحقًا سيحتوي على جميع معلومات التعريف من عملية الاستيراد (مثل معرف المنشور الأصلي من phpBB). والسبب هو أنني أفكر في إجراء الاستيراد على جهاز أكبر لسرعة الاستيراد، ثم تشغيل المنتدى على خادم VPS لاحقًا، ولكن قد أقوم باستيراد تدريجي آخر بعد نقل كل شيء إلى خادم VPS. أتساءل عما إذا كان إجراء نسخة احتياطية من Discourse وإعادة استيرادها كافياً، أم أنه من الأفضل عمل نسخة احتياطية لقاعدة البيانات بطريقة أخرى (أي طريقة؟).
وسؤال آخر: هل إعادة كتابة الروابط في أداة الاستيراد آمنة لتغيير النطاق لاحقًا؟ كنت أخطط لاستخدام نطاق أو نطاق فرعي مختلف للهجرة الأولية، ثم التبديل إلى النطاق الفعلي لاحقًا.
لقد انتهيت للتو من أول عملية هجرة تجريبية، وقبل أي شيء آخر أود أن أشكر @gerhard وجميع المساهمين الآخرين في هذا. من المدهش كيف نجح الأمر بهذه الطريقة في المحاولة الأولى. لقد استغرق مني حوالي 24 ساعة لاستيراد أقل قليلاً من 900 ألف منشور مع المستخدمين والرسائل الخاصة وأشياء أخرى، وتبدو الأمور جيدة جدًا في المحاولة الأولى. إنه لأمر رائع امتلاك أداة استيراد بهذه الجودة لإنجاز هذه المهمة.
ومع ذلك، هناك بعض الأمور، والأهم منها أنني أحاول حاليًا تتبعها هو أن بعض الروابط الداخلية تبدو وكأنها ذهبت بشكل خاطئ تمامًا بينما عملت أخرى بشكل جيد جدًا. لأكون أكثر دقة، يبدو أن عدد الروابط الصحيحة أكبر بكثير من الخاطئة. أحاول إيجاد نمط يوضح أي الروابط لم تعمل. هل يمكن لأي شخص تقديم بعض الأفكار حول كيفية عمل تغيير الروابط الداخلية؟ هل توجد على الأرجح بعض النقاط الحرجة التي قد تفشل فيها؟
ملاحظة جانبية: مباشرة بعد الاستيراد، لاحظت أن جميع الصور الرمزية مفقودة في الاقتباسات، لكنني اكتشفت لاحقًا أنها تبدو وكأنها تُنشأ تلقائيًا، ويبدو أنه بعد 20 دقيقة أصبحت جميعها موجودة الآن. مذهل
بشأن وقت الاستيراد: تم ذلك على خادم افتراضي خاص (VPS) من Hetzner بـ 4 أنوية معزولة للمعالج - أعتقد أنني سأعيد المحاولة على خادم معدني عاري فقط لعملية الاستيراد لتحسين وقت الهجرة. أحتاج أولاً إلى معرفة كيفية نقل نسخة احتياطية من discourse.
هذه تلميح مثير للاهتمام. لا أستطيع أن أرى سببًا لحدوث ذلك في بعض الحالات التي راجعتها، لكنني بالتأكيد سأستكشف هذا المسار. الغريب أنه في حالتي يربط المنشورات الخاطئة. في حالة الفشل، أفترض أنه لن يفعل شيئًا أو سيترك الرابط كما هو. للأسف، معرفتي بلغة Ruby تكاد تكون معدومة، لكنني سأراجع الكود على أي حال.
هل توجد طريقة لتجاوز هذه المشكلة؟ أعتقد أنه قد يحدث ذلك كثيرًا مع منشورات بأسلوب الدروس التي يتم تحريرها وتعديلها مرارًا وتكرارًا وإضافة روابط إليها. هل توجد أي فرصة لتجاوز ذلك بخلاف تعديل تلك المنشورات يدويًا؟
ها قد لاحظت للتو أن مجموعات المستخدمين لم يتم استيرادها، كما رأيت أنها غير مدرجة في المنشور الأولي هنا، لكنها بالفعل واحدة من أول الأشياء التي تظهر في أداة الاستيراد. أتساءل عما إذا كان هناك طريقة لاستيرادها بما في ذلك ربط المستخدمين بتلك المجموعات، أو أن ذلك لا يعمل بعد؟ في الحالة الثانية، سنحتاج على الأرجح إلى إيجاد حل بديل.
نعم، هذا غريب. هذا يشير إلى أن بعض الروابط المحلية لديك بصيغة غير متوقعة من قبل سكريبت الاستيراد، مما يجعل التعبير النمطي (regex) يبحث عن المنشور الخطأ. إذا قام شخص ما بالتعديل على منشور لاحقًا ليشير إلى منشور لم يكن موجودًا في الأصل (هل تأكدت من صحة ذلك؟)، فقد يكون استخدم وسيلة أخرى لإنشاء الرابط مما أربك السكريبت.
من المدهش مدى تفرد كل عملية استيراد (خاصةً في المنتديات الناضجة). نادرًا ما تكون عملية الاستيراد مجرد تشغيل السكريبت (لكن، أفترض، أن الناس أكثر عرضة لتوظيفي إذا كانت عملية الاستيراد لديهم معقدة).