Laravel 5.4: Specified key was too long; max key length is 767 bytes error

Si te gustó compartelo :)

[AdSense-A]

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 oprtunidad al querer realizar un

php artisan migrate

ó un

php artisan migrate --seed
[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 😀

 

Opción 1:

Esta primera opción nos la dan directamente en la documentación de Laravel como puden ver en el link o en la imagen inferior

 

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
*/
publicfunctionboot()
{
Schema::defaultStringLength(191);
}

[AdSense-A]

Opción 2:

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! 😀
Más Información de el problema:
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.
Espero le sirva a más de alguien 😀


Si te gustó compartelo :)

Comments

comments

Sidebar