Hola a todos!,
Laravel 5.4 en si trae muchas mejoras y cambios beneficiosos para todos quienes lo utilizamos, pero en mi caso este error me ha pasado en más de una oportunidad al querer ejecutar cualquiera de estos dos comandos:
php artisan migrate php artisan migrate --seed
Error que muestra:
[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
Existen 2 soluciones, en la primera oportunidad me funcionó la opción 1, pero en otro proyecto simplemente no me sirvió de nada así que la opción 2 llego a salvarme 😀
Esta primera opción nos la dan directamente en la documentación de Laravel
Ir al archivo AppServiceProvider.php, ubicado en:
app/Providers/AppServiceProvider.php
y en la función boot debemos agregar la siguiente línea
Schema::defaultStringLength(191);
quedando finalmente así:
/** * Bootstrap any application services. * * @return void */ public function boot() { Schema::defaultStringLength(191); }
Para esta opción debemos editar la configuración de Laravel para MYSQL en el archivo database.php ubicado en:
config/database.php
una vez allí buscaremos la opción de mysql y debemos cambiar los valores de charset y collation
'mysql' => [ 'charset' => 'utf8mb4', 'collation'=>'utf8mb4_unicode_ci', ]
por lo siguiente:
'mysql' => [ 'charset' => 'utf8', 'collation'=>'utf8_unicode_ci', ]
al menos a mi me han funcionado a la perfección, intenten la primera, si no les funciona hagan la segunda y problema resuelto! 😀
El problema se debe a que el character set se cambio por utf8mb4 lo que permite almacenar emojis, lo cual solo esta soportado desde MYSQL en su versión 5.7.7 por lo que si su versión es menor les saldrá el problema asi que ya saben!
Espero le sirva a más de alguien 😀
Page loaded in 36.85 ms