検索

ホームページ  >  に質問  >  本文

開発者に報告してください: PDO::__construct(): サーバーから送信された文字セット (255) がクライアントによって認識されません

Symfony 3 アプリケーションから MySQL データベースに接続しようとしています。しかし、Symfony コンソール コマンドから MySQL スキーマを作成しようとすると、次のエラーが発生します: PDO::__construct(): サーバーはクライアントに不明な文字セット (255) を送信しました。開発者に報告してください

PHP と MySQL はどちらも Docker コンテナ内で実行されます。

MySQL バージョン: 8.0.1

PHP バージョン: 7.1.3

ドライバー: pdo_mysql

文字セット: UTF8

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

###何か案は?

P粉808697471P粉808697471445日前727

全員に返信(2)返信します

  • P粉364642019

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

    MySQL 8.0.11 にアップグレードした後、PHP の mysqli_connect() 関数を使用するときに OP と同じ問題が発生しました。 MySQL ディレクトリ (私の場合、usr/local/mysql) で my.cnf ファイルを作成し、承認された回答の内容を追加して、MySQL サーバーを再起動しました。 。ただし、これにより新しいエラーが発生しました:

    mysqli_connect(): サーバーはクライアントに知られていない認証方法を要求しました [caching_sha2_password]

    default_authentication_plugin = mysql_native_password を追加したため、my.cnf は次のようになります:

    リーリー

    行くのがとても楽しみです!

    その他の参考資料:https://github.com/laradock/laradock/issues/1392

    ARA1307 のコメントに注意してください:

    「新しいユーザーを作成し、「IDENTIFIED WITH mysql_native_password」を明示的に指定し、既存のユーザーを変更する必要があることに注意してください。例: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

    返事
    0
  • P粉884548619

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

    MySQL 8 では、デフォルトの文字セットが utf8mb4 に変更されます。しかし、顧客の中にはこの文字セットを知らない人もいます。したがって、このエラーは、サーバーがデフォルトの文字セットをクライアントに報告し、クライアントがサーバーの意味を知らない場合にスローされます。

    関連項目https://bugs.mysql.com/bug.php?id= 71606

    このバグは MySQL Connector/C に固有のものであるため、PHP 以外にも影響します。

    正しい解決策はクライアントをアップグレードすることですですが、それまでは、アップグレードされていないクライアントと互換性を持たせるためにサーバーの文字セットを utf8 に変更することで動作するようにしました。これを /etc/my.cnf に追加し、mysqld を再起動しました:

    リーリー

    この 2010 年の回答で次の設定を見つけました: my.cnf の MySQL のデフォルトの文字セットを UTF-8 に変更しますか?

    返事
    0
  • キャンセル返事