Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur d'index de jeu de caractères initial inconnu réintroduite ?

Ceci parle des changements qui se sont produits depuis la 8.0L'un des points qui a été répertorié pour que vous puissiez vous y référer est le suivant :

Par conséquent, le jeu de caractères et le classement par défaut des nouveaux objets diffèrent des précédents, sauf si un jeu de caractères et un classement explicites sont spécifiés. Cela inclut les bases de données et les objets qu'elles contiennent, tels que les tables, les vues et les programmes stockés.

Une façon de conserver les valeurs par défaut précédentes est de démarrer le serveur avec ces lignes dans my.cnf fichier :

[mysqld]
character_set_server=latin1
collation_server=latin1_swedish_ci

Une autre option, puisque vous exécutez docker, consiste à spécifier ces options de configuration en tant qu'arguments de ligne de commande pour la commande docker run. Par exemple :

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

Sur le client, si vous souhaitez apporter des modifications - nous espérons que celles-ci devraient suffire :

Pour utiliser des jeux de caractères UTF-8 à 4 octets avec Connector/J, configurez le serveur MySQL avec character_set_server=utf8mb4 , et laissez characterEncoding hors de la chaîne de connexion Connector/J.

Connector/J détectera alors automatiquement le UTF-8 réglage

J'espère que cela vous aidera !