نماد سایت خرید هاست | خرید هاست و دامین | خرید سرور مجازی واختصاصی-پارس وب سرور

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

یکی از ارورهایی که در نسخه 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',

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

Rate this post
خروج از نسخه موبایل