Lumen 5.6 Migrate Error Specified key was too long

2020-06-16 04:41发布

I use Lumen 5.6 and mysql. when i type "php artisan migrate" following error occur:

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

I put following code into "boot" method in the AppServiceProvider

Schema::defaultStringLength(191);

but I didn't achieve to any success.

6条回答
beautiful°
2楼-- · 2020-06-16 04:54

you just need one more step

go to app.php on bootstrap folder and uncomomment or modif this line

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

to this code

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

have a good day

查看更多
Root(大扎)
3楼-- · 2020-06-16 04:55
  1. in bootstrap/app.php un-comment this line:
$app->register(App\Providers\AppServiceProvider::class);
  1. in app/AppServiceProvider.php add below public function to AppServiceProvider class:
public function boot()
  {
    Schema::defaultStringLength(191);
  }
查看更多
Deceive 欺骗
4楼-- · 2020-06-16 05:08

You need couple of things to do. I also faced this issue and fixed it by following these two steps

  1. Go to app.php in bootstrap directory and uncomment or modify this line.

    // $app->register(App\Providers\AppServiceProvider::class);
    
  2. Now you need to define boot()function in AppServiceProviderfile

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

Then you are good to go!

查看更多
做自己的国王
5楼-- · 2020-06-16 05:10

Go to config in file database.php then edit

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

to

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
查看更多
疯言疯语
6楼-- · 2020-06-16 05:12

Known to work in Laravel/Lumen 7.x:

I've tried the un-commenting of AppServiceProvider::class and other solutions mentioned above, but the following worked for me.

If you look in /vendor/laravel/lumen-framework/config/database.php for charset and collation, the code checks your .env file and resorts to utf8mb4 and utf8mb4_unicode_ci, respectively.

If your database' charset is set to utf8 and collation to utf8_unicode_ci, simply add the following to your .env file:

# .env
...
DB_CHARSET=utf8
DB_COLLATION=utf8_unicode_ci
...
查看更多
Summer. ? 凉城
7楼-- · 2020-06-16 05:15
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.
查看更多
登录 后发表回答