Inicio > Desarrollo Web > Tutoriales de Laravel > Laravel 5.4 Specified Key Was Too Long Max Key Length Is 767 Bytes Error

Laravel 5.4 Specified Key Was Too Long Max Key Length Is 767 Bytes Error

Diego Cortés
Diego Cortés
May 17, 2017
Laravel 5.4 Specified Key Was Too Long Max Key Length Is 767 Bytes Error

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 😀

Opción 1:

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);
}

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 asi que ya saben!

Espero le sirva a más de alguien 😀

Diego Cortés
Diego Cortés
Full Stack Developer, SEO Specialist with Expertise in Laravel & Vue.js and 3D Generalist

Categorías

Page loaded in 45.98 ms