Hello everyone!
Laravel 5.4 itself brings many improvements and beneficial changes for all of us who use it, but in my case this error has happened to me on more than one occasion when trying to execute any of these two commands:
php artisan migrate php artisan migrate --seed
Error showing:
[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
There are 2 solutions, the first time option 1 worked for me, but in another project it simply didn't help me at all so option 2 came to save me 😀
This first option is given directly in the Laravel documentation
Go to the AppServiceProvider.php file, located at:
app/Providers/AppServiceProvider.php
and in the boot function we must add the following line
Schema::defaultStringLength(191);
finally remaining like this:
/** * Bootstrap any application services. * * @return void */ public function boot() { Schema::defaultStringLength(191); }
For this option we must edit the Laravel configuration for MYSQL in the database.php file located at:
config/database.php
once there we will look for the mysql option and we must change the charset and collation values
'mysql' => [ 'charset' => 'utf8mb4', 'collation'=>'utf8mb4_unicode_ci', ]
by the following:
'mysql' => [ 'charset' => 'utf8', 'collation'=>'utf8_unicode_ci', ]
At least they worked perfectly for me, try the first one, if it doesn't work for you try the second one and problem solved! 😀
The problem is because the character set was changed to utf8mb4 which allows storing emojis, which is only supported from MYSQL in its version 5.7.7 so if your version is lower you will get the problem so you know!
I hope it helps more than one person 😀
Page loaded in 43.04 ms