نقل منتدى vBulletin 4 إلى Discourse

I know this is a bit of an old topic, but I’ve just completed a comparably sized vb4 migration and am missing a LOT of image attachments, somewhere on the order of 75% of them I’d wager. They are not tombstoned, and all the threads have been rebaked.

Has anyone else dealt with this? How should I go about recovering those images?

Did you see errors when you did the import?

إعجاب واحد (1)

Yes, quite a few ‘Attachment file doesn’t exist’ errors with some ‘Couldn’t find attachment record for post.id=xxx, import_id=xxx’ sprinkled in.

The thing that has me scratching my head is that these are posts that I know have intact attachments, and that those attachments are in the ATTACHMENT_DIR global directory. The threads with missing images are missing ALL the associated images, which seems… not random.

I’m at a loss to find any common factor among the threads/posts with lost images either.

Those messages were your clue that something was amiss. All you can do is diagnose the problem an run the import again.

Every import is a snowflake. I’ve don’t dozens of them. It’s rare that one just works. If you’d like help: Redirecting…

إعجابَين (2)

أردت تجربة Discourse من خلال تحويل قاعدة بيانات VBulletin الكبيرة لدينا، لذا جربت هذا السكربت.

تم استيراد المستخدمين والمجموعات، لكنه فشل عدة مرات الآن في الفئات الفرعية.

   جاري استيراد الفئات الرئيسية...
        7 / 7 (100.0%)  [902 عنصر/دقيقة]   n]
جاري استيراد الفئات الفرعية...
Traceback (most recent call last):
        5: from script/import_scripts/vbulletin.rb:942:in `<main>'
        4: from /home/peterb/discourse/script/import_scripts/base.rb:47:in `perform'
        3: from script/import_scripts/vbulletin.rb:84:in `execute'
        2: from script/import_scripts/vbulletin.rb:287:in `import_categories'
        1: from script/import_scripts/vbulletin.rb:287:in `each'
script/import_scripts/vbulletin.rb:289:in `block in import_categories': undefined method `[]' for nil:NilClass (NoMethodError)

لقد تحققت من عدة أمور مثل ترميز UTF8 وموارد الخادم وما إلى ذلك، لكنني الآن في حيرة من أمري حول ما يمكنني التحقق منه بعد ذلك.
هل لديكم أي أفكار؟
شكرًا.

أقوم حاليًا باستيراد منتديات vBulletin يتكون من 8 ملايين منشور. لقد أضفت دعم الإعجابات (يبدو أنها إضافة أو تعديل ما) والاستطلاعات.

لا أستطيع تحديد المشكلة بدقة من الرسالة الخطأ. تخميني هو أن هناك مشكلة في البحث عن parentid بطريقة ما.

أعتقد أنك بحاجة إلى إصلاح الكود التالي بطريقة ما:

    parent_category_id: category_id_from_imported_category_id(category["parentid"])

بحيث لا يفشل إذا كان category['parentid'] هو nil.

إعجاب واحد (1)

شكرًا لك. لقد راجعت الأمر مرة أخرى، ويبدو أن المسؤولين قد أنشأوا “أقسامًا” من الفئات عن طريق تعيين معرف الوالد إلى -1… وهو رقم غير موجود.

3 إعجابات

نعم، يبدو أنك اكتشفت الأمر. إن حدوث أخطاء من هذا القبيل هو القاعدة وليس الاستثناء. ثم عليك أن تقرر ما إذا كنت ستصلح الأمر في قاعدة البيانات أم ستعدل الكود ليتعامل مع قاعدة البيانات المعطلة.

3 إعجابات

الأمر المعتاد في أي عملية هجرة بيانات هو أن أي سكريبت تجده لن يغطي جميع الاحتمالات. ولا يساعد في ذلك أن الوقت الوحيد المتاح لدي للعمل على هذا يبدو أنه في وقت متأخر من الليل (إنه عمل تطوعي لنادي السيارات الخاص بي). موقع vBulletin مخصص إلى حد كبير، لذا سأرى ما هي المفاجآت الأخرى التي ستظهر.

4 إعجابات

أفهم أن هناك سكريبتًا يمكنه التعامل مع استيراد vBulletin 4، لكنني لا أرى أي شيء يتعلق بإعادة توجيه جميع الروابط إلى تنسيق عناوين Discourse الجديد.

كيف تتعاملون مع هذا؟ ماذا يحدث لجميع الروابط الخارجية الموجودة في منتدياتكم؟

إليك الرابط:

3 إعجابات

شكرًا لك @RGJ، لكن هل يمكنك شرح كيفية عمل هذا في الواقع؟ ما هو هذا السكربت بالضبط؟ هل يقوم بإنشاء نوع من عناوين URL البديلة (في Discourse) لتوجيهها إلى عناوين URL الحالية/الصحيحة المستوردة في Discourse؟

كيف تنصح بنقل نطاق قديم يعمل على vBulletin (www.example1.com) إلى نطاق جديد يعمل على Discourse (www.example2.com

أعتقد أن الطريقة المثالية ستكون توجيه النطاق القديم للمنتدى إلى النطاق الجديد لجميع الزيارات/الروابط الواردة بناءً على قائمة من عمليات إعادة التوجيه 301. كيف تنصح بإنشاء قائمة عمليات إعادة التوجيه هذه؟

لا تحتاج إلى تغيير النطاقات، ولكن إذا قمت بذلك، فهناك عملية من خطوتين.

  1. أعد توجيه كل شيء من النطاق القديم إلى النطاق الجديد.
  2. ستقوم روابط Discourse الدائمة بترجمة عناوين URL بأسلوب vBulletin إلى موضوعات Discourse الصحيحة.

إذا لم تقم بتغيير النطاقات ولكنك وجهتها فقط إلى إعداد Discourse الجديد، فستكون لديك الخطوة رقم 2 فقط.

إعجاب واحد (1)

كيف يتم توجيهات HTTP الخاصة بـ Discourse باستخدام الأكواد 301 أو 302؟

أنا مهتم من منظور تحسين محركات البحث (SEO) لمعرفة ما إذا كان تغيير النطاق سيؤثر على الترتيبات.

301 انتقل بشكل دائم

كلمة رابط دائم تقول كل شيء :slight_smile:

إعجاب واحد (1)

يمكنك التحقق من ذلك بنفسك بزيارة /admin/customize/permalinks وإنشاء رابط دائم لترى كيف يعمل.

لدي مشكلة مع عدم استيراد المرفقات بشكل كامل، مشابهة لما ذُكر من قبل، لكن السكربت لا يُظهر أي أخطاء.
قاعدة البيانات صغيرة (71 ميجابايت) وينتهي الاستيراد بالكامل في 0 دقيقة و23 ثانية.


الغالبية العظمى من المرفقات مفقودة من المنشورات.
نفذت استعلامات SQL على قاعدة بيانات vb4 الخاصة بي مباشرة كما هي في السكربت، وهي تُرجع البيانات الصحيحة، لذا لا أعرف أين تكمن المشكلة في الوقت الحالي…

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

لدي سكربت يستورد تلك الملفات، لكنني لم أتمكن بعد من تقديم طلب دمج (PR).

نعم، أعتقد أنك محق @pfaffman، هذا هو الحال بالفعل.
سأنتظر ذلك السكربت عندما تقوم برفعه!

إذا كان لديك ميزانية، فأخبرني. أعزم على تقديم نسخة بعد انتهاء عملية الاستيراد هذه، لكنني بحاجة إلى إزالة كمية كبيرة من الكود المخصص لهذا الاستيراد فقط، وهو السبب في عدم حدوث ذلك قبل عام…

إعجاب واحد (1)