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

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

Startseite

كيف حليت مشكلة ترميز قاعدة البيانات بعد ترحيل المشروع – تجربة حقيقية مع 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 بشكل عام.

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

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

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


NameE-MailNachricht