Dilema Set Aksara MySQL PDO yang Tidak Diketahui
Apabila cuba menyambung ke pangkalan data MySQL melalui aplikasi Symfony 3, anda mungkin menghadapi ralat misteri mesej "PDO::__construct(): Server menghantar set charset (255) yang tidak diketahui kepada klien. Sila laporkan kepada pembangun." Isu ini berpunca daripada ketidakpadanan antara set aksara lalai pelayan dan pemahaman klien tentangnya.
Latar Belakang
MySQL versi 8.0.1 telah mengubah set aksara lalainya kepada utf8mb4 . Walau bagaimanapun, pelanggan tertentu masih tidak menyedari perubahan ini. Akibatnya, apabila pelayan menyampaikan set aksara lalainya kepada pelanggan, respons yang tidak dikenali akan mencetuskan ralat yang disebutkan di atas.
Resolusi
Penyelesaian optimum memerlukan peningkatan pelanggan kepada versi yang mengakui utf8mb4. Walau bagaimanapun, sebagai langkah sementara, anda boleh mengubah suai set aksara pelayan kepada utf8 untuk menampung pelanggan yang tidak dinaik taraf. Ini dicapai dengan menambahkan baris berikut pada /etc/my.cnf:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8
Penyelesaian Alternatif
Satu lagi penyelesaian yang berpotensi adalah dengan menetapkan secara paksa charset sambungan MySQL kepada nilai tertentu. Dalam rentetan sambungan PDO anda, anda boleh menggunakan parameter charset, seperti:
$dsn = "mysql:host=mysql;dbname=database;charset=utf8mb4;";
Dengan mentakrifkan charset secara eksplisit dalam rentetan sambungan PDO, anda boleh memintas set aksara lalai pelayan dan memastikan keserasian dengan kedua-dua yang telah ditingkatkan. dan pelanggan yang tidak dinaik taraf.
Atas ialah kandungan terperinci Mengapa Aplikasi Symfony 3 Saya Mendapat Ralat 'PDO::__construct(): Server menghantar charset (255) tidak diketahui kepada klien' Semasa Menyambung ke MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!