Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Aplikasi Symfony 3 Saya Mendapat Ralat 'PDO::__construct(): Server menghantar charset (255) tidak diketahui kepada klien' Semasa Menyambung ke MySQL?

Mengapa Aplikasi Symfony 3 Saya Mendapat Ralat 'PDO::__construct(): Server menghantar charset (255) tidak diketahui kepada klien' Semasa Menyambung ke MySQL?

DDD
Lepaskan: 2024-12-18 15:57:09
asal
844 orang telah melayarinya

Why Does My Symfony 3 Application Get a

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
Salin selepas log masuk

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;";
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan