• 周五. 10 月 11th, 2024

    [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

    发表回复