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!