ترقية منتدى vBulletin من النسخة 3.x إلى 5.x وتحويل قاعدة بيانات MySQL من cp1256/latin1 إلى utf8

تقليص
هذا موضوع مثبت.
X
X
 
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة
  • AboAbdulla

    ابوعبدالله

    • 23 - 12 - 2004
    • 5530
    • السعودية
    • الطيران
    • طيار
    • Saudi Airlin
    • Dakota
    • السلامة الجوية



    • (( قُلْ يَا عِبَادِيَ الَّذِينَ أَسْرَفُوا عَلَى أَنفُسِهِمْ لَا تَقْنَطُوا مِن رَّحْمَةِ اللَّهِ
      إِنَّ اللَّهَ يَغْفِرُ الذُّنُوبَ جَمِيعًا إِنَّهُ هُوَ الْغَفُورُ الرَّحِيمُ ))

      اللهم إني استودعتك قلبي فلا يبقى فيه إلا أنت
      واستودعتك لا إله الا الله فذكرنيها في كل وقت

    #1

    ترقية منتدى vBulletin من النسخة 3.x إلى 5.x وتحويل قاعدة بيانات MySQL من cp1256/latin1 إلى utf8


    🔁 ترقية منتدى vBulletin من النسخة 3.x إلى 5.x وتحويل قاعدة بيانات MySQL من cp1256/latin1 إلى utf8

    في السنوات الماضية ما قبل 2010 كانت الإنترنت تعج بالمنتديات ومعظم هذه المنتديات كانت تعتمد على سكربت vBulletin ومع مرور الوقت اختفت معظمها غالباً لأسباب برمجية وذلك بسبب توقف الشركة عن دعم السكربتات القديمة مثل vB3 و vB4 و الآن توقفت عن دعم vB5
    لكن لا تزال بعض المواقع تعمل حتى اليوم وهذه يستدعي أصحابها إلى إجراءات كثير من بينها التحولات بأستخدم أصدارات قديمة وغير مدعومة من برامج تشغيل قواعد البيانات MySQL والسيرفرات PHP مثل PHP5.2 و PHP7.2 التي كذلك توقف دعمها.

    💥 أن ترقية منتدات vBulletin 3.8 إلى vBulletin 5.7 بالطريقة التقليدة التي يتم فيها ترقية أصدارات القديمة vB3 لن يعمل ويحتاج الى خطوات عديدة ومهمة من أهمها تصحيح عمل قواعد البيانات ليتوافق مع الاصدارت الحديثة لــ MySQL لذلك من المهم أخذ نسخة أحتياطية من أي قاعدة بيانات تريد ترقيتها إلى الاصدارات الحديثة.

    🔁 خطوات الترقية بالتفصيل:
    1. مشكلة التوافق مع MySQL 8.0:
    • vBulletin 5.7 يتطلب MySQL 8.0 ليعمل.
    • لكن vBulletin 3.8 لا يعمل على MySQL 8.0 لأن الأخير يُجبر الاتصال الجديد على استخدام: utf8.
    2. تعديل إعدادات vBulletin 3.8:
    افتح ملف الإعدادات التالي:
    كود:
    includes/config.php
    وابحث عن هذا السطر وقم بإلغاء التعليق (إزالة //) وتعديله كالتالي:
    كود:
    $config['Mysqli]['charset]=latin1';
    🔧 هذا السطر يسمح لـ vBulletin 3.8 بالعمل على MySQL 8 بدون ظهور حروف مشوشة أو رموز غير مفهومة.
    ❓ لماذا
    كود:
    latin1
    لأن هذا كان الترميز الافتراضي في MySQL 4.x و5.x في عام 2009، وكان vBulletin وقتها يرث ترميز قاعدة البيانات بشكل مباشر دون تحديده.

    ⚠️ مشكلة أخرى بعد الترقية إلى vBulletin 5.x:
    بعد الترقية أحتمال كبير يظهر الخطأ التالي:
    كود:
    Warning: mb_convert_encoding() Unknown encoding "WINDOWS-1256"
    🔍 السبب: vBulletin 5.x يستخدم مكتبة mbstring لتحويل الترميز بناءً على إعدادات اللغة المخزنة في جدول languages - وهذه المكتبة لا تدعم cp1256

    الحل النهائي (والفعال):
    يمكنك تنفيذ الخطوات التالية قبل أو بعد الترقية إلى vBulletin 5. الفكرة هي تحويل قاعدة البيانات من latin1/cp1256 إلى utf8 بشكل صحيح.

    🛠️ الخطوات العملية:

    🏗️ 1. تصدير هيكل قاعدة البيانات فقط (بدون بيانات) ضروري جداً بدونها لن ينجح التحويل
    كود:
    mysqldump -u DB_USER -p --no-data OLD_DB_NAME > OLD_DB_NAME_SCHEMA.sql
    📝 2. تعديل الترميز في ملف SQL:
    باستخدام محرر
    كود:
    vim
    أو أي محرر نصوص، شغّل:
    كود:
    %s/CHARSET=latin1/CHARSET=utf8/g
    🗃️ 3. إنشاء قاعدة بيانات جديدة بترميز UTF-8 واستيراد الهيكل إليها:

    كود:
    mysql -u DB_USER -p NEW_DB_NAME  OLD_DB_NAME_SCHEMA.sql
    ⚙️ 4. تغيير الترميز الافتراضي للجداول:
    إذا كنت تستخدم phpMyAdmin:
    • ادخل إلى قاعدة البيانات الجديدة.
    • من قسم Operations في الأسفل، غيّر الترميز إلى:
      كود:
      utf8mb3_unicode_ci
    • وفعل الخيارين أسفله لتطبيقه على الجداول.
    أو يمكنك استخدام هذا الأمر في الطرفية:
    كود:
    echo 'SHOW TABLES;' \
    | mysql NEW_DB_NAME \
    | awk '!/^Tables_in_/ {print "ALTER TABLE `"$0"` DEFAULT CHARACTER SET utf8 COLLATE utf8mb3_unicode_ci;"}' \
    | column -t \
    | mysql NEW_DB_NAME
    💾 5. تصدير البيانات فقط من قاعدة البيانات القديمة:
    كود:
    mysqldump -u DB_USER -p -t --skip-set-charset --default-character-set=latin1 OLD_DB_NAME  OLD_DB_NAME_DATA.sql
    اضغط على الصورة لعرض أكبر.   الإسم:	collation.jpg  مشاهدات:	1  الحجم:	61.4 كيلوبايت  الهوية:	2371219
    🔁 6. تحويل البيانات من cp1256 إلى utf8 باستخدام iconv:
    كود:
    iconv -c -f WINDOWS-1256 -t UTF8 OLD_DB_NAME_DATA.sql -o NEW_DB_NAME_DATA.sql
    📥 7. استيراد البيانات المحوّلة إلى القاعدة الجديدة:
    كود:
    mysql -u DB_USER -p
    ثم داخل MySQL:
    كود:
    USE NEW_DB_NAME;
    SOURCE /path/to/NEW_DB_NAME_DATA.sql;
    EXIT;
    النتيجة النهائية: قاعدة بيانات نظيفة، ترميزها بـ UTF-8 وجاهزة للعمل بسلاسة مع vBulletin 5.x بدون مشاكل ترميز أو أخطاء.
  • AboAbdulla

    ابوعبدالله

    • 23 - 12 - 2004
    • 5530
    • السعودية
    • الطيران
    • طيار
    • Saudi Airlin
    • Dakota
    • السلامة الجوية



    • (( قُلْ يَا عِبَادِيَ الَّذِينَ أَسْرَفُوا عَلَى أَنفُسِهِمْ لَا تَقْنَطُوا مِن رَّحْمَةِ اللَّهِ
      إِنَّ اللَّهَ يَغْفِرُ الذُّنُوبَ جَمِيعًا إِنَّهُ هُوَ الْغَفُورُ الرَّحِيمُ ))

      اللهم إني استودعتك قلبي فلا يبقى فيه إلا أنت
      واستودعتك لا إله الا الله فذكرنيها في كل وقت

    #2

    بما أن علامات الاستفهام ؟؟؟؟ تظهر بدلاً من الأحرف الأصلية سواء رأيتها في المتصفح أ مباشرة في قاعدة البيانات فهذا يعني أن البيانات قد فُقدت للأسف.

    لقد فُقدت أثناء عملية الإدخال (INSERT) لأن ترميز latin1 لا يحتوي على رموز تمثل بعض الأحرف الخاصة باللغة العربية.

    ملاحظة مهمة جدا:

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

    الحل: ابدأ من جديد.
    اتبع الخطوات التالية لتفادي المشكلة:
    1. تأكد من أن المحرر أو البيئة التي تستخدمها مضبوطة على UTF-8.
    2. اجعل النماذج (forms) في HTML تبدأ بهذه الطريقة:
      كود:
      form accept-charset="UTF-8"
    3. تأكد أن البيانات المُرسلة (bytes) مشفرة باستخدام UTF-8.
    4. ثبّت أن ترميز UTF-8 هو المستخدم في العميل (المتصفح).
    5. اجعل الأعمدة أو الجداول في قاعدة البيانات تستخدم:
      كود:
      CHARACTER SET utf8mb4
      (يمكنك التأكد باستخدام الأمر):
      كود:
      SHOW CREATE TABLE
    6. أضف في بداية صفحات HTML:
      كود:
      meta charset="UTF-8"

    تعليق

    مواضيع ذات صلة

    تقليص

    يعمل...