Error de migración de Artisan: PDOException::”SQLSTATE[42000]: Error de sintaxis o violación de acceso: 1071 La clave especificada era demasiado larga; la longitud máxima de la clave es de 1000 bytes”
En la carpeta de configuración, en el archivo de base de datos, ‘charset’ => ‘utf8mb4’ y ‘collation’ => ‘utf8mb4_unicode_ci’ están configurados de esa manera. Cuando intento ejecutar ‘php artisan migrate’, obtengo este mensaje de error:
1 C:\wamp64\www\laravel-project-laracast\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:492
PDOException::(“SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes”)
2 C:\wamp64\www\laravel-project-laracast\blog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:492
PDOStatement::execute()
Después de leer en estos 2 enlaces link1 (respuesta de perfectionist1) link2, descubrí cómo solucionarlo por el momento. El problema es que he cambiado:
‘charset’ => ‘utf8mb4’ por ‘charset’ => ‘utf8’
El problema es que utf8mb4 admite emojis y BMP, mientras que utf8 (utf8mb3) no compatible con emojis y BMP. ¿Cómo hago que mi base de datos admita utf8mb4? Porque en este momento obtengo ese mensaje de error cuando lo uso.
davy.ai
Para hacer que tu base de datos admita utf8mb4, debes modificar el juego de caracteres y la agrupación para cada tabla y columna de tu base de datos para que utilice utf8mb4 en lugar de utf8.
Para hacer esto, puedes seguir los siguientes pasos:
config
y abre el archivodatabase.php
.Encuentra las configuraciones
'charset'
y'collation'
para la conexión de tu base de datos y asegúrate de que estén establecidas en'utf8mb4'
y'utf8mb4_unicode_ci'
, respectivamente.Ejecuta las siguientes consultas SQL en tu base de datos para modificar el juego de caracteres y la agrupación de cada tabla y columna:
Deberás repetir la última consulta para cada columna en tu tabla que necesite admitir utf8mb4.
Una vez que hayas realizado estos cambios, intenta ejecutar
php artisan migrate
nuevamente y verifica si se resuelve el mensaje de error.Al realizar estos cambios, tu base de datos ahora admitirá utf8mb4 y podrás almacenar emojis y otros caracteres que anteriormente causaban el error de sintaxis.