¿Mas Información?

Soy Marco Orta, un desarrollador web y diseñador gráfico con más de 10 años de experiencia en el desarrollo de sitios web y aplicaciones web.

Contacto

Cómo solucionar el error
  • Desarrollo web
  • 1 min de lectura
  • Por Marco Orta

Cómo solucionar el error "Specified key was too long error" en Laravel

En cuantas ocasiones has instalado un nuevo proyecto en Laravel y al momento de correr las migraciones te has encontrado con un error en tu consola:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Podemos solucionarlo de 3 formas:

Tabla de Contenidos

Solución 1

Si utilizas MariaDB o versiones anteriores de MySQL v5.7.7 simplemente actualiza a la versión estable más reciente y no volverás a tener este problema.

Solución 2

Si no puedes o no quieres actualizar MySQL, intenta modificando el engine de mysql en el archivoconfig/database.php

'mysql' => [
    ...
    'engine' => 'InnoDB',
]

Solución 3

Si por algún motivo no te funciona la solución 2, agrega la siguiente línea al archivo app/Providers/AppServiceProvider.php

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

¿Por qué ocurre este error?

Desde la versión 5.4 de Laravel se realizó un cambio en el conjunto de caracteres predeterminado de la base de datos, y ahora es utf8mb4, que incluye soporte para almacenar emojis. Esto solo afecta a las aplicaciones que utilicen versiones anteriores a MySQL v5.7.7

¡Comparte este articulo!

Deja un Comentario

Tu dirección de correo electrónico no será publicada.