流明5.6迁移错误指定的密钥太长,最大密钥长度为767字节

Bab*_*ust 6 php mysql database laravel lumen

我使用Lumen 5.6和mysql。当我输入“ php artisan migration”时,发生以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t  
oo long; max key length is 767 bytes (SQL: alter table `users` add unique `  
users_email_unique`(`email`))  
Run Code Online (Sandbox Code Playgroud)

我将以下代码放入AppServiceProvider中的“启动”方法中

Schema::defaultStringLength(191);
Run Code Online (Sandbox Code Playgroud)

但是我没有取得任何成功。

小智 9

您只需要再走一步

转到bootstrap文件夹上的app.php并取消注释或修改此行

// $app->register(App\Providers\AppServiceProvider::class);
Run Code Online (Sandbox Code Playgroud)

这个代码

$app->register(App\Providers\AppServiceProvider::class);
Run Code Online (Sandbox Code Playgroud)

祝你有美好的一天


Mr.*_*mid 8

你需要做几件事。我也遇到了这个问题并通过以下两个步骤修复了它

  1. 转到 bootstrap 目录中的 app.php 并取消注释或修改此行。

    // $app->register(App\Providers\AppServiceProvider::class);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在你需要boot()AppServiceProvider文件中定义函数

        public function boot()
        {
           Schema::defaultStringLength(191);
        }
    
    Run Code Online (Sandbox Code Playgroud)

那么你就可以开始了!


Kul*_*hra 7

use Illuminate\Support\Facades\Schema; //AppServiceProvider.php

public function boot(){
Schema::defaultStringLength(191);
}

//rollback your migration or delete all table from database then migrate again.
Run Code Online (Sandbox Code Playgroud)


Leo*_*ent 5

转到文件中的配置,database.php然后编辑

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
Run Code Online (Sandbox Code Playgroud)

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
Run Code Online (Sandbox Code Playgroud)

  • 我什至在我的 Lumen 项目中都没有看到这个文件。 (2认同)