问题
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.
回答1:
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
回答2:
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.
回答3:
Go to config in file database.php
then edit
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
to
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
回答4:
You need couple of things to do. I also faced this issue and fixed it by following these two steps
Go to app.php in bootstrap directory and uncomment or modify this line.
// $app->register(App\Providers\AppServiceProvider::class);
Now you need to define
boot()
function inAppServiceProvider
filepublic function boot() { Schema::defaultStringLength(191); }
Then you are good to go!
回答5:
- in bootstrap/app.php un-comment this line:
$app->register(App\Providers\AppServiceProvider::class);
- in app/AppServiceProvider.php add below public function to
AppServiceProvider
class:
public function boot()
{
Schema::defaultStringLength(191);
}
来源:https://stackoverflow.com/questions/51169760/lumen-5-6-migrate-error-specified-key-was-too-long-max-key-length-is-767-bytes