開発者に報告してください: PDO::__construct(): サーバーから送信された文字セット (255) がクライアントによって認識されません
P粉808697471
P粉808697471 2023-10-16 10:02:44
0
2
704

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粉808697471
P粉808697471

全員に返信(2)
P粉364642019

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

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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート