es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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:

    1. En tu proyecto de Laravel, ve a la carpeta config y abre el archivo database.php.
    2. 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.

    3. 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:

      ALTER DATABASE tu_nombre_de_base_de_datos CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      
      ALTER TABLE tu_nombre_de_tabla CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      
      ALTER TABLE tu_nombre_de_tabla MODIFY tu_nombre_de_columna VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      

      Deberás repetir la última consulta para cada columna en tu tabla que necesite admitir utf8mb4.

    4. 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.

Comments are closed.