اذهب إلى المحتوى

السؤال

نشر

لااعرف ماذا يقصد ب max key length   ولماذا ظهر معي هذ االخطا ع الرغم من انه كان يعمل معي بصورة طبيعية

Laravel Migration Error: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

صورة الخطأ

62aa4f3d8b142_Screenshot(22).thumb.png.e2af913746c151d921cf68d8609f007d.png

Recommended Posts

  • 0
نشر

سبب المشكلة هو تحديد طول افتراضي لحقل الإيميل بشكل كبير، فهذا يؤثر على عمل الفهرسة و اختبار تكرار السلاسل النصية للبريد الإلكتروني عند إضافة بريد جديد خاصة مع إضافة القيد unique لمنع التكرار (البحث ضمن القاعدة يأخذ وقتاً ونريد تقليله قدر الإمكان) وهذا يعمل فهرسة لقاعدة البيانات و زيادة الحجم غير محبذة و يسبب بطئ في عملية المعالجة.. حيث أن الفهارس يفترض أن تزيد سرعة المعالجة وليس تقليلها.

يمكن لأي تعديل في المشروع أن يظهر أخطاء جديد لأن الكثير من الأمور مرتبطة ببعضها، لا مشكلة بذلك

يمكن حل المشكلة في تعديل الملف بزيادة الطول المسموح للنوع String

/app/Providers/AppServiceProvider.php

نضيف التضمين التالي:

use Illuminate\Support\Facades\Schema;

وضمن دالة boot:

public function boot()
{
    Schema::defaultStringLength(191);
}

ثم يمكنك إعادة عمل التهجير و بذر البيانات.

كما يوجد حلول أخرى يمكنك البحث عن رسالة الخطأ وتجريبها.

من هذه الحلول تغيير ترميز البيانات ل utf8

config/database.php 

نعدل

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
to

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

أو تعديل محرك قواعد البيانات:

config/database.php

تبديل 
'engine' => null',


مع
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',

ثم للحلين السابقين تنفيذ الأمر

php artisan config:cache

لسبب تعديل ملف ضمن الإعدادات config.

والتوثيق الرسمي يشرح نفس الحل من: laravel migrations creating-indexes

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...