Memahami PDO::__construct() Ralat: Server Sent Unknown Charset
Ralat PDO::__construct() yang ditemui semasa cuba untuk menyambung ke pangkalan data MySQL daripada Symfony 3 timbul apabila pelayan menghantar set aksara (255) yang tidak dikenali oleh pelanggan. Isu ini berlaku disebabkan oleh kemas kini dalam MySQL 8.0.1, yang menggunakan utf8mb4 sebagai set aksara lalainya.
Walaupun MySQL dan PHP beroperasi dalam bekas Docker, pelanggan tetap tidak mengetahui set aksara baharu. Akibatnya, ia mentafsirkan respons pelayan sebagai nilai yang tidak diketahui dan mencetuskan ralat ini.
Penyelesaian: Menaik taraf Pelanggan
Penyelesaian asas melibatkan peningkatan pelanggan. Dengan menggabungkan sokongan untuk utf8mb4, pelanggan boleh berkomunikasi dengan pelayan dengan berkesan dan menyelesaikan isu tersebut. Peningkatan ini memastikan keserasian dengan set aksara yang diubah.
Penyelesaian Sementara: Mengubah Suai Set Aksara Pelayan
Sebagai alternatif, penyelesaian sementara wujud untuk mengekalkan keserasian dengan pelanggan yang tidak dinaik taraf . Dengan menukar set aksara pelayan kepada utf8, ia sejajar dengan batasan pelanggan lama. Pelarasan ini boleh dilaksanakan dengan mengubah suai fail /etc/my.cnf dan memulakan semula mysqld dengan tetapan berikut:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8
Sementara penyelesaian ini menyelesaikan isu segera, menaik taraf klien kekal sebagai pilihan dan jangka panjang penyelesaian untuk memastikan keserasian dan prestasi optimum.
Atas ialah kandungan terperinci Mengapa PDO::__construct() Gagal dengan 'Server Sent Unknown Charset' dalam Symfony 3 dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!