JavaScript is not enabled!...Please enable javascript in your browser

جافا سكريبت غير ممكن! ... الرجاء تفعيل الجافا سكريبت في متصفحك.

الصفحة الرئيسية

كيف حليت مشكلة ترميز قاعدة البيانات بعد ترحيل المشروع – تجربة حقيقية مع Laravel و MySQL



✍️ المقدمة:

في أحد المشاريع التي قمت بترحيلها من استضافة محلية إلى سيرفر VPS، واجهت مشكلة مفاجئة جعلت البيانات تظهر بأحرف غير مفهومة (����) خصوصًا النصوص العربية.

في هذا المقال سأشارك تجربتي الكاملة:
من أين جاءت المشكلة، وكيف قمت بحلها خطوة بخطوة باستخدام Laravel وMySQL، بالإضافة إلى نصائح مهمة لتجنب هذا النوع من الأخطاء مستقبلًا.

💡 كيف بدأت المشكلة؟

كل شيء كان يعمل بشكل ممتاز محليًا (localhost)، وبعد الترحيل إلى سيرفر حقيقي فوجئت بما يلي:

  • تظهر الحروف العربية بشكل مشوه (رموز غريبة)

  • عمليات البحث في قاعدة البيانات لا تعمل مع النصوص

  • الحروف داخل الجداول تظهر كـ ????

🔍 التشخيص: ما السبب الحقيقي؟

المشكلة لم تكن في Laravel، ولا في الكود، وإنما في ترميز قاعدة البيانات بعد الترحيل.

الترميز في الاستضافة الجديدة كان:

latin1_swedish_ci

بينما في مشروعي الأصلي كان:

utf8mb4_unicode_ci

وهنا بدأ الخلل.

🛠️ الحل خطوة بخطوة:

1. التأكد من ترميز قاعدة البيانات

نفذت هذا الأمر داخل MySQL:

SHOW CREATE TABLE users;

وكانت النتيجة تشير إلى الترميز القديم (latin1)، وهذا سبب ظهور الرموز الغريبة.

2. تعديل الترميز يدوياً

فتحت قاعدة البيانات من خلال phpMyAdmin أو من سطر الأوامر، ثم نفذت:

ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

كررت هذا الأمر مع الجداول الأخرى.

3. تعديل إعدادات Laravel

في ملف .env الخاص بـ Laravel، تأكدت أن إعدادات الاتصال بقاعدة البيانات تستخدم الترميز الصحيح:

DB_CONNECTION=mysql
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

4. إعادة ترحيل البيانات مع الحفاظ على الترميز

في بعض الحالات، اضطررت لإعادة تصدير الجداول بصيغة SQL باستخدام UTF-8، مع تفعيل خيار:

  • ✅ "SET NAMES utf8mb4" قبل التصدير

  • ✅ "Encoding: UTF-8" أثناء الاستيراد

✅ النتيجة:

تمت استعادة جميع الحروف العربية بنجاح، وبدأت عمليات البحث تعمل بشكل طبيعي دون أي رموز غريبة.

🧠 نصائح لتجنب المشكلة مستقبلاً:

  • دائمًا صدّر قاعدة البيانات بترميز UTF-8 من البداية.
  • حدد الترميز في ملف .env قبل أي عملية migration.

  • تأكد من إعدادات MySQL على السيرفر الجديد:

    1. character_set_server = utf8mb4

       2.  collation_server = utf8mb4_unicode_ci
  • استخدم أدوات مثل Adminer أو DBeaver لمراقبة الترميز بعد النقل.

🧾 الخلاصة:

هذه المشكلة تحدث كثيرًا أثناء ترحيل المشاريع، خصوصًا لمن يتعامل مع اللغة العربية أو Unicode بشكل عام.

قد تبدو بسيطة، لكنها تؤثر على تجربة المستخدم بشكل مباشر وتُربك المطورين الجدد.

💬 هل واجهت مشكلة مشابهة أثناء ترحيل مشروعك؟

شاركها معي في التعليقات، وسأقوم بتغطيتها في مقال مخصص.


الاسمبريد إلكترونيرسالة