Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Sambungan PHP PDO Saya Gagal dengan 'Set Aksara Tidak Diketahui (255)' daripada MySQL 8?

Mengapa Sambungan PHP PDO Saya Gagal dengan 'Set Aksara Tidak Diketahui (255)' daripada MySQL 8?

Barbara Streisand
Barbara Streisandasal
2024-12-10 03:33:08891semak imbas

Why Does My PHP PDO Connection Fail with

Ralat PDO: Set Aksara Tidak Diketahui (255) daripada Pelayan MySQL

Apabila menyambung ke pangkalan data MySQL, pembangun mungkin menghadapi ralat: " PDO::__construct(): Pelayan menghantar charset (255) yang tidak diketahui kepada klien. Sila laporkan kepada pembangun. Ini boleh timbul dalam situasi yang melibatkan bekas Docker dan aplikasi Symfony.

Punca:

MySQL versi 8 memperkenalkan perubahan di mana set aksara lalai telah diubah suai kepada utf8mb4. Walau bagaimanapun, sesetengah pelanggan, seperti versi PHP tertentu, tidak mengenali set aksara ini. Apabila pelayan menyampaikan charset lalainya kepada pelanggan, kekurangan pemahaman pelanggan membawa kepada ralat.

Penyelesaian:

Penyelesaian yang ideal adalah untuk menaik taraf pelanggan kepada yang menyokong utf8mb4. Untuk tujuan keserasian, adalah mungkin untuk melaraskan set aksara pelayan kepada utf8, seperti yang ditunjukkan di bawah:

Langkah 1: Edit Konfigurasi Pelayan MySQL

Tambah baris berikut ke /etc/my.cnf dan mulakan semula MySQL:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8

Langkah 2: Mulakan semula MySQL

Mulakan semula MySQL untuk menggunakan perubahan:

service mysql restart

Pengubahsuaian ini akan memastikan keserasian dengan pelanggan lama yang tidak menyokong utf8mb4.

Atas ialah kandungan terperinci Mengapa Sambungan PHP PDO Saya Gagal dengan 'Set Aksara Tidak Diketahui (255)' daripada MySQL 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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