خطای migrate کردن لاراول SQLSTATE[42000] Specified key was too long

یکی از خطاهایی که در نسخه‌های جدید لاراول به هنگام migrate کردن اتفاق می‌افتاد، به صورت زیر می‌باشد:

[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

لاراول 5.4، تغییراتی را در مقادیر پیشفرض مجموعه کاراکترهای دیتابیس اعمال کرده است؛ و آن نیز utf8mb4 می‌باشد که اکنون از اموجی‌ها هم پشتیبانی می‌کند. بدین منظور ممکن است با این خطا روبررو شوید.

روش رفع خطا

از پوشه app، وارد Providers شده و سپس برروی AppServiceProvider.php کلیک کنید. سپس داخل متد boot، خط زیر را اضافه کنید:

Schema::defaultStringLength(191);

همچنین فراموش نکنید که خود Schema را در بالای کلاس use کنید:

use Illuminate\Support\Facades\Schema;

دستور زیر را جهت حذف کشکانفیگ خود انجام دهید:

php artisan config:cache

حالا می‌توانید میگیریشن خود را انجام دهید. ولی ابتدا بهتر که جداول مربوط به میگریشن ناقصی که قبلا انجام دادید و خطای بالا رخ داد را از دیتابیس حذف کنید.

 

پاسخ دهید

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

cp-codfk

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک