لاراول ۵.۴ : رفع مشکل Specified key was too long error

لاراول ۵.۴ تغییری را در character set پیش فرض دیتابیس اعمال کرده است و آن را به utf8mb4 تغییر داده که می تواند emoji ها را نیز ذخیره کند. این فقط برنامه های جدید را تحت تاثیر قرار می دهد و تا زمانیکه از MySQL v5.7.7 یا نسخه های بالاتر استفاده می کنید مشکلی نخواهید داشت.

آنهایی که از MariaDB یا نسخه های قدیمی تر MySQL استفاده می کنند مثل من احتمالا با مشکل زیر روبرو خواهند بود:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

همانطور که در مستندات Migration لاراول آمده است، برای رفع مشکل باید فایل AppServiceProvider.php را ویرایش کرده و در داخل متد Boot آن ، کد زیر را قرار داده و طول پیش فرض رشته را تعیین کنید:

use Illuminate\Support\Facades\Schema;

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

حالا همه چیز باید درست کار کند.

منبع

 

 

در همین رابطه :   LaraCSV - ایجاد فایل های CSV از اطلاعات جداول Eloquent Model
دسته بندی : Laravel

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

More in CSS
الحاق فونت دلخواه به صفحه با استفاده از css

سلام احتمالا در حال وبگردي سايت هايي را ديده ايد كه از فونت هاي عجيب و غريب استفاده مي كنند...

Close