دقیقه مطالعه

آموزش رفع ارور Specified key was too long هنگام migrate لاراول

آموزش رفع ارور Specified key was too long هنگام migrate لاراول
17 - فروردین - 1400

یکی از ارورهایی که در نسخه 5.4 لاراول به هنگام 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 tabl e 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

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

Schema::defaultStringLength(191);

همچنین دستور زیر را اضافه کنید :

use Illuminate\Support\Facades\Schema;

تنظیمات نهایی به صورت زیر می باشد :

use Illuminate\Support\Facades\Schema;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Schema::defaultStringLength(191);
}

در نهایت برای حذف کش دستور زیر را وارد کنید :

php artisan config:cache

اکنون مشکل مرتفع شده است. اگرچه توصیه می شود جداول migration ناقص را از دیتابیس حذف کنید.

اگر روش بالا برای شما موثر واقع نشد، از پوشه config فایل database.php را ویرایش کرده و مقادیر charset و collation را به صورت زیر جایگزین کنید :

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

امیدواریم این آموزش مورد توجه شما قرار گرفته باشد.

دیدگاهتان را بنویسید

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