• 周五. 11 月 13th, 2026

[Laravel]Illuminate 1071 Specified key was too long; max key length is 767 bytes

由root

7 月 18, 2020

在我们使用Laravel框架时候,执行php artisan migrate 进行数据库迁移时,会报错误, 这时由于Laravel 对默认数据库字符集进行了更改 utf8mb4它包含了对存储表情符号的支持 , 如果您的MySQL版本5.7.7不受影响,低于该版本会报标题中的错误。大概其意思为:

SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长; 最大密钥长度为767字节

要解决此问题,您只需编辑 AppServiceProvider.php文件并在 boot方法内设置默认字符串长度:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;

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

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

再次执行php artisan migrate,如果提示报错表已经存在,则需要把对应的表删除即可

由 root

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注