Comprendre l'erreur PDO::__construct() : le serveur a envoyé un jeu de caractères inconnu
L'erreur PDO::__construct() rencontrée lors de la tentative de se connecter à une base de données MySQL depuis Symfony 3 survient lorsque le serveur transmet un jeu de caractères (255) que le client ne reconnaît pas. Ce problème est dû à une mise à jour de MySQL 8.0.1, qui adopte utf8mb4 comme jeu de caractères par défaut.
Bien que MySQL et PHP fonctionnent dans les conteneurs Docker, le client ignore le nouveau jeu de caractères. En conséquence, il interprète la réponse du serveur comme une valeur inconnue et déclenche cette erreur.
Solution : Mise à niveau du client
La solution fondamentale consiste à mettre à niveau le client. En intégrant la prise en charge de utf8mb4, le client peut communiquer efficacement avec le serveur et résoudre le problème. Cette mise à niveau garantit la compatibilité avec le jeu de caractères modifié.
Solution temporaire : modification du jeu de caractères du serveur
Alternativement, une solution de contournement temporaire existe pour maintenir la compatibilité avec les clients non mis à niveau. . En modifiant le jeu de caractères du serveur en utf8, cela s'aligne sur les limitations des anciens clients. Cet ajustement peut être mis en œuvre en modifiant le fichier /etc/my.cnf et en redémarrant mysqld avec les paramètres suivants :
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8
Bien que cette solution de contournement résolve le problème immédiat, la mise à niveau du client reste la solution préférée et à long terme. solution pour assurer une compatibilité et des performances optimales.
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!