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

u4vypkhs  于 2021-06-20  发布在  Mysql
关注(0)|答案(6)|浏览(385)

我使用Lumen5.6和mysql。当我键入“php artisan migrate”时,会出现以下错误:

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`))

我将以下代码放入appserviceprovider的“boot”方法中

Schema::defaultStringLength(191);

但我没有取得任何成功。

vof42yt1

vof42yt11#

你只需要再多走一步
转到引导文件夹上的app.php并取消注解或修改此行

// $app->register(App\Providers\AppServiceProvider::class);

到这个代码

$app->register(App\Providers\AppServiceProvider::class);

祝您今天过得愉快

mdfafbf1

mdfafbf12#

你需要做几件事。我也面临这个问题,并通过以下两个步骤解决了它
转到引导目录中的app.php并取消注解或修改这一行。

// $app->register(App\Providers\AppServiceProvider::class);

现在你需要定义 boot() 中的函数 AppServiceProvider 文件

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

那你就可以走了!

zdwk9cvp

zdwk9cvp3#

在bootstrap/app.php中取消注解这行:

$app->register(App\Providers\AppServiceProvider::class);

在app/appserviceprovider.php中,将下面的公共函数添加到 AppServiceProvider 班级:

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

zu0ti5jz4#

已知在laravel/lumen 7.x中工作:
我试过不评论 AppServiceProvider::class 以及上面提到的其他解决方案,但下面的方法对我有效。
如果你往里面看 /vendor/laravel/lumen-framework/config/database.php 为了 charset 以及 collation ,代码检查 .env 归档并诉诸 utf8mb4 以及 utf8mb4_unicode_ci 分别是。
如果数据库的字符集设置为 utf8 整理 utf8_unicode_ci ,只需将以下内容添加到 .env 文件:


# .env

...
DB_CHARSET=utf8
DB_COLLATION=utf8_unicode_ci
...
9udxz4iz

9udxz4iz5#

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

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

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

hujrc8aj6#

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.

相关问题