sql >> Base de Datos >  >> RDS >> Mysql

¿Se reintrodujo un error de índice de juego de caracteres inicial desconocido?

Esto habla sobre los cambios que han ocurrido desde la versión 8.0. Uno de los puntos que se han enumerado para que los consultes es este:

Como resultado, el juego de caracteres y la intercalación predeterminados para los nuevos objetos difieren de los anteriores a menos que se especifiquen un juego de caracteres y una intercalación explícitos. Esto incluye bases de datos y objetos dentro de ellas, como tablas, vistas y programas almacenados.

Una forma de conservar los valores predeterminados anteriores es iniciar el servidor con estas líneas en my.cnf archivo:

[mysqld]
character_set_server=latin1
collation_server=latin1_swedish_ci

Otra opción, dado que está ejecutando docker, es especificar estas opciones de configuración como argumentos de línea de comando para el comando de ejecución de docker. Por ejemplo:

docker run -d \
--network my-net \
-h mysqldb \
--name mysqldb \
-p 3306:3306 \
-e MYSQL_RANDOM_ROOT_PASSWORD=yes \
-e MYSQL_DATABASE=mydb \
-e MYSQL_USER=admin \
-e "MYSQL_PASSWORD=admin" \
mysql:8 --character-set-server=latin1 --collation-server=latin1_swedish_ci

En el cliente, si desea realizar cambios, con suerte estos deberían ser suficientes:

Para usar conjuntos de caracteres UTF-8 de 4 bytes con Connector/J, configure el servidor MySQL con character_set_server=utf8mb4 y deja characterEncoding fuera de la cadena de conexión Connector/J.

Connector/J detectará automáticamente el UTF-8 configuración

¡Espero que esto ayude!