Lors de l'utilisation de conteneurs Docker pour déployer des bases de données MySQL, des caractères chinois tronqués peuvent parfois apparaître. En effet, le jeu de caractères par défaut de MySQL est Latin1 et les caractères chinois doivent être codés en UTF-8. Cet article explique comment résoudre le problème chinois tronqué de Docker MySQL.
1. Vérifiez le jeu de caractères MySQL actuel
Tout d'abord, nous devons vérifier le jeu de caractères MySQL actuel. Vous pouvez utiliser la commande suivante après vous être connecté à MySQL :
mysql> show variables like '%char%';
Parmi elles, les variables liées au jeu de caractères sont :
Après avoir vérifié que le jeu de caractères MySQL actuel est Latin1, nous devons le modifier en UTF-8. Cela peut être réalisé des deux manières suivantes :
Modifier le fichier de configuration MySQL[client] default-character-set=utf8 [mysqld] character-set-server=utf8
Parmi eux, [client] est utilisé pour définir le jeu de caractères du client sur UTF-8, et [mysqld] est utilisé pour définir le jeu de caractères du serveur sur UTF-8. Redémarrez le service MySQL une fois la modification terminée :
sudo service mysql restart
mysql --default-character-set=utf8 -u用户名 -p密码 数据库名
Une fois la connexion réussie, exécutez les commandes suivantes dans l'ordre pour modifier le jeu de caractères :
SET character_set_client = utf8; SET character_set_connection = utf8; SET character_set_database = utf8; SET character_set_results = utf8; SET character_set_server = utf8;
Une fois la modification terminée, quittez MySQL et reconnectez-vous pour prendre effet.
3. Utilisez le jeu de caractères UTF-8 dans le conteneur Docker
Étant donné que MySQL dans le conteneur Docker s'exécute en fonction de l'image, nous devons définir le jeu de caractères UTF-8 dans l'image. L'image MySQL peut être construite via le Dockerfile suivant :
FROM mysql:latest ENV MYSQL_ROOT_PASSWORD=root ENV MYSQL_DATABASE=test ENV MYSQL_CHARSET=utf8 ENV MYSQL_COLLATION=utf8_general_ci COPY ./init.sql /docker-entrypoint-initdb.d/
Parmi eux, la commande ENV est utilisée pour définir les variables d'environnement, MYSQL_CHARSET est utilisée pour définir le jeu de caractères MySQL sur UTF-8 et MYSQL_COLLATION est utilisée pour définir le classement sur utf8_general_ci. Le script d'initialisation init.sql est également copié dans l'image via la commande COPY pour une exécution automatique lors du démarrage du conteneur.
4. Résumé
Grâce aux trois étapes ci-dessus, nous pouvons utiliser MySQL dans le conteneur Docker et définir le jeu de caractères sur UTF-8 pour éviter le problème des caractères chinois tronqués. Bien entendu, si vous devez gérer des jeux de caractères multilingues, vous devez effectuer des ajustements en fonction de la situation spécifique. J'espère que cet article pourra être utile à tout le monde.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!