🔁 ترقية منتدى 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 3.8 بالعمل على MySQL 8 بدون ظهور حروف مشوشة أو رموز غير مفهومة.
❓ لماذا
لأن هذا كان الترميز الافتراضي في MySQL 4.x و5.x في عام 2009، وكان vBulletin وقتها يرث ترميز قاعدة البيانات بشكل مباشر دون تحديده.
⚠️ مشكلة أخرى بعد الترقية إلى vBulletin 5.x:
بعد الترقية أحتمال كبير يظهر الخطأ التالي:
🔍 السبب: vBulletin 5.x يستخدم مكتبة mbstring لتحويل الترميز بناءً على إعدادات اللغة المخزنة في جدول languages - وهذه المكتبة لا تدعم cp1256
✅ الحل النهائي (والفعال):
يمكنك تنفيذ الخطوات التالية قبل أو بعد الترقية إلى vBulletin 5. الفكرة هي تحويل قاعدة البيانات من latin1/cp1256 إلى utf8 بشكل صحيح.
🛠️ الخطوات العملية:
🏗️ 1. تصدير هيكل قاعدة البيانات فقط (بدون بيانات) ضروري جداً بدونها لن ينجح التحويل
📝 2. تعديل الترميز في ملف SQL:
باستخدام محرر
أو أي محرر نصوص، شغّل:
🗃️ 3. إنشاء قاعدة بيانات جديدة بترميز UTF-8 واستيراد الهيكل إليها:
⚙️ 4. تغيير الترميز الافتراضي للجداول:
إذا كنت تستخدم phpMyAdmin:
💾 5. تصدير البيانات فقط من قاعدة البيانات القديمة:

🔁 6. تحويل البيانات من cp1256 إلى utf8 باستخدام iconv:
📥 7. استيراد البيانات المحوّلة إلى القاعدة الجديدة:
ثم داخل MySQL:
✅ النتيجة النهائية: قاعدة بيانات نظيفة، ترميزها بـ UTF-8 وجاهزة للعمل بسلاسة مع vBulletin 5.x بدون مشاكل ترميز أو أخطاء.
في السنوات الماضية ما قبل 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.
افتح ملف الإعدادات التالي:
كود:
includes/config.php
كود:
$config['Mysqli]['charset]=latin1';
❓ لماذا
كود:
latin1
⚠️ مشكلة أخرى بعد الترقية إلى vBulletin 5.x:
بعد الترقية أحتمال كبير يظهر الخطأ التالي:
كود:
Warning: mb_convert_encoding() Unknown encoding "WINDOWS-1256"
✅ الحل النهائي (والفعال):
يمكنك تنفيذ الخطوات التالية قبل أو بعد الترقية إلى vBulletin 5. الفكرة هي تحويل قاعدة البيانات من latin1/cp1256 إلى utf8 بشكل صحيح.
🛠️ الخطوات العملية:
🏗️ 1. تصدير هيكل قاعدة البيانات فقط (بدون بيانات) ضروري جداً بدونها لن ينجح التحويل
كود:
mysqldump -u DB_USER -p --no-data OLD_DB_NAME > OLD_DB_NAME_SCHEMA.sql
باستخدام محرر
كود:
vim
كود:
%s/CHARSET=latin1/CHARSET=utf8/g
كود:
mysql -u DB_USER -p NEW_DB_NAME OLD_DB_NAME_SCHEMA.sql
إذا كنت تستخدم 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
كود:
mysqldump -u DB_USER -p -t --skip-set-charset --default-character-set=latin1 OLD_DB_NAME OLD_DB_NAME_DATA.sql
🔁 6. تحويل البيانات من cp1256 إلى utf8 باستخدام iconv:
كود:
iconv -c -f WINDOWS-1256 -t UTF8 OLD_DB_NAME_DATA.sql -o NEW_DB_NAME_DATA.sql
كود:
mysql -u DB_USER -p
كود:
USE NEW_DB_NAME; SOURCE /path/to/NEW_DB_NAME_DATA.sql; EXIT;



تعليق