PDO 不明な MySQL 文字セットのジレンマ
Symfony 3 アプリケーション経由で MySQL データベースに接続しようとすると、謎のエラーが発生する可能性がありますメッセージ「PDO::__construct(): サーバーはクライアントに不明な文字セット (255) を送信しました。開発者に報告してください。」この問題は、サーバーのデフォルトの文字セットとクライアントのそれに対する理解との不一致が原因で発生します。
Background
MySQL バージョン 8.0.1 では、デフォルトの文字セットが utf8mb4 に変更されました。 。ただし、一部のクライアントはこの変更に気づいていません。その結果、サーバーがデフォルトの文字セットをクライアントに通信するときに、認識されない応答によって前述のエラーがトリガーされます。
解決策
最適な解決策には、クライアントをutf8mb4を認識するバージョン。ただし、暫定的な措置として、サーバーの文字セットを utf8 に変更して、アップグレードされていないクライアントに対応することができます。これは、次の行を /etc/my.cnf に追加することで実現できます。
Alternative Solution
もう 1 つの潜在的な解決策は、MySQL 接続文字セットを強制的に設定することです。特定の値に。 PDO 接続文字列では、次のような charset パラメータを使用できます。
PDO 接続文字列で charset を明示的に定義することで、サーバーのデフォルトの文字セットをバイパスし、アップグレードされた両方の文字セットとの互換性を確保できます。およびアップグレードされていないクライアント。
以上がMySQL に接続すると、Symfony 3 アプリケーションで「PDO::__construct(): サーバーはクライアントに不明な文字セット (255) を送信しました」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。