# Specified key was too long # Escenario Despliegue de una app de laravel en un servidor. Ejecutamos el primer migrate y zas. ``` php artisan migrate ... Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes ... ``` No nos asustemos; el tema está en una diferencia de versión MySQL > ATENCIÓN a programadores cada vez las diferencias entre versiones de un mismo motor son fuertes (MySQL 5.X vs MySQL 8, por ejemplo), MySQL vs MariaDB vs Percona. Algunas pueden producir serios problemas en caso de tener que recuperar un backup de otro motor o versión, o una configuración. ## Posibles soluciones ### Actualización del motor de Base de Datos Si es posible lo adecuado, es que uses el mismo motor tanto en desarrollo, testing y producción. Y la misma configuración. > Tener apps profesionales, en un entorno compartido, es como ser un feriante (con respeto a su profesión). Sufriras, tu tienda o negocio no tendrá el aspecto que tendrías en un [servidor dedicado o VPS](https://intranet.castris.com/store/vps-ssd-develop), optimizado para tu negocio ### Modificación del engine en tu app Si te es imposible o no quieres actualizar tu monotr de bases de datos, intenta modificar el engine de mysql en el archivo `config/database.php` ``` 'mysql' => [ 'driver' => 'mysql', ... 'engine' => 'InnoDB, ... ], ``` ### Modificación del AppServiceProvider Si no te funciona la anterior, puede agregar una linea en tu fichero `app/Providers/AppServiceProvider.php` ``` ... use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Schema; ... public function boot() { Schema::defaultStringLength(191); } ``` #### Explicación La naturaleza del problema es debido a que por defecto Laravel usa como codificación **utf8mb4**, con soporte para los emojis. #### Enlaces y cosas sobre el tema - [mysql 8 ERROR 1231 (42000) at line Variable ‘time_zone’](https://castris.com/mysql-8-error-1231-42000-at-line-variable-time-zone/) - [Mysql restore con error 1217 y error 1292](https://castris.com/mysql-restore-con-error-1217-y-error-1292/) ##### Aviso Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com) Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/cart.php?gid=18).