لاراول ۵.۴ : رفع مشکل 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);
}

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

منبع

 

 

در همین رابطه :   نوشتن کوئری left join در فریم ورک لاراول 5

پاسخ دهید

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

More in Ajax, PHP, مديريت سايت, امنيت
تشخیص لرزش موبایل با jQuery

در این پست می خواهیم روی برنامه ای کار کنیم که می تواند لرزش موبایل را تشخیص داده و طبق...

Close