Maison > base de données > tutoriel mysql > Pourquoi PDO::__construct() échoue-t-il avec « Jeu de caractères inconnu envoyé par le serveur » dans Symfony 3 et comment puis-je y remédier ?

Pourquoi PDO::__construct() échoue-t-il avec « Jeu de caractères inconnu envoyé par le serveur » dans Symfony 3 et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-12-31 14:01:10
original
485 Les gens l'ont consulté

Why Does PDO::__construct() Fail with

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal