Maison  >  Questions et réponses  >  le corps du texte

Veuillez signaler aux développeurs : PDO::__construct() : jeu de caractères envoyé par le serveur (255) non reconnu par le client.

J'essaie de me connecter à une base de données MySQL depuis une application Symfony 3. Mais lorsque j'essaie de créer un schéma MySQL à partir de la commande de la console Symfony, j'obtiens cette erreur : PDO::__construct(): 服务器发送了客户端未知的字符集 (255)。请向开发者报告

PHP et MySQL fonctionnent tous deux dans des conteneurs Docker.

Version MySQL : 8.0.1

Version PHP : 7.1.3

Pilote :pdo_mysql

Ensemble de personnages :UTF8

dsn : "mysql:host=mysql;dbname=database;charset=UTF8;"

Des idées ?

P粉808697471P粉808697471389 Il y a quelques jours644

répondre à tous(2)je répondrai

  • P粉364642019

    P粉3646420192023-10-17 09:06:36

    Après la mise à niveau vers MySQL 8.0.11, j'utilisais le fichier mysqli_connect()函数时遇到了与OP相同的问题。在我的 MySQL 目录(在我的例子中,usr/local/mysql)中,我创建了 my.cnf de PHP, j'ai ajouté le contenu de la réponse acceptée et j'ai redémarré le serveur MySQL. Cependant, cela a généré une nouvelle erreur :

    mysqli_connect():服务器请求客户端未知的身份验证方法 [caching_sha2_password]

    J'ai ajouté la ligne default_authentication_plugin = mysql_native_password,所以 my.cnf et maintenant cela ressemble à :

    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    collation-server = utf8_unicode_ci
    character-set-server = utf8
    default_authentication_plugin = mysql_native_password

    J'ai tellement hâte d'y aller !

    Plus de références : https://github.com/laradock/laradock/issues/1392

    Veuillez noter le commentaire d'ARA1307 :

    "Veuillez noter que vous devez créer de nouveaux utilisateurs et spécifier explicitement "IDENTIFIÉ AVEC mysql_native_password", et modifier les utilisateurs existants, par exemple : ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';"

    répondre
    0
  • P粉884548619

    P粉8845486192023-10-17 00:27:36

    MySQL 8 modifie le jeu de caractères par défaut en utf8mb4. Mais certains clients ne connaissent pas ce jeu de caractères. Ainsi, cette erreur est générée lorsque le serveur signale son jeu de caractères par défaut au client et que celui-ci ne sait pas ce que signifie le serveur.

    Voir aussi https://bugs.mysql.com/bug.php?id= 71606

    Ce bug est spécifique à MySQL Connector/C++, il n'affecte donc pas seulement PHP.

    La bonne solution est de mettre à niveau le client , mais en attendant, je l'ai fait fonctionner en changeant le jeu de caractères du serveur en utf8 pour être compatible avec les clients non mis à niveau. Je l'ai ajouté à /etc/my.cnf et j'ai redémarré mysqld :

    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    
    [mysqld]
    collation-server = utf8_unicode_ci
    character-set-server = utf8

    J'ai trouvé ces paramètres dans cette réponse de 2010 : Changer le jeu de caractères par défaut de MySQL dans my.cnf en UTF-8 ?

    répondre
    0
  • Annulerrépondre