Desde la introducción de Laravel 5.4, se produjo un cambio en el charset de las bases de datos donde se reconocía el tipo utf8mb4, que reconocías cadenas que contuvieran emojis. Lo que afecta a las versiones recientes de MySQL.
El error
Al lanzar las migraciones dentro de un proyecto de Laravel se nos devuelve un error SQL:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
Este problema aún no ha sido corregido en las versiones recientes de Laravel así que tenemos que parchear un poco el problema.
La solución
Tenemos que editar el archivo AppServiceProvider.php que se encuentra en el directorio app/Providers del proyecto de Laravel.
A esta clase le vamos a incluir el facade «Schema» y en el método boot() añadimos la siguiente línea:
use Illuminate\Support\Facades\Schema; class AppServiceProvider extends ServiceProvider { public function boot() { Schema::defaultStringLength(191); }
Ahora cada vez que ejecutemos migraciones o consultas SQL dentro del proyecto no nos lanzará el error.