Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lumen 5.6 Migrate Error Specified key was too long max key length is 767 bytes

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.

like image 514
Babak no'doust Avatar asked Jul 04 '18 09:07

Babak no'doust


4 Answers

  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);
  }
like image 150
Masih Jahangiri Avatar answered Sep 20 '22 01:09

Masih Jahangiri


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

like image 17
ards Avatar answered Nov 06 '22 12:11

ards


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!

like image 8
Mr. Pyramid Avatar answered Nov 06 '22 14:11

Mr. Pyramid


Go to config in file database.php then edit

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

to

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
like image 7
Leo Avatar answered Nov 06 '22 14:11

Leo