首頁 >後端開發 >php教程 >為什麼我的 PHP PDO 連線因 MySQL 8 中的「未知字元集 (255)」而失敗?

為什麼我的 PHP PDO 連線因 MySQL 8 中的「未知字元集 (255)」而失敗?

Barbara Streisand
Barbara Streisand原創
2024-12-10 03:33:08891瀏覽

Why Does My PHP PDO Connection Fail with

PDO 錯誤:來自MySQL 伺服器的未知字元集(255)

連接到MySQL 資料庫時,開發人員可能會遇到錯誤:" PDO::__construct():伺服器向客戶端發送了未知的字元集(255),請向開發人員報告。」在涉及Docker 容器和 Symfony 應用程式的情況下,可能會發生這種情況。

原因:

MySQL 版本 8 引入了一項更改,將預設字元集修改為 utf8mb4。但是,某些用戶端(例如某些 PHP 版本)無法辨識此字元集。當伺服器將其預設字元集傳達給客戶端時,客戶端缺乏理解會導致錯誤。

解決方案:

理想的解決方案是將客戶端升級到一個支援utf8mb4的。出於相容性目的,可以將伺服器的字元集調整為utf8,如下所示:

第1 步:編輯MySQL 伺服器設定

將以下行加入到/etc/my.cnf 並重新啟動MySQL:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

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

第 2步驟:重新啟動MySQL

重新啟動 MySQL 以套用變更:

service mysql restart

此修改將確保與不支援 utf8mb4 的舊客戶端的相容性。

以上是為什麼我的 PHP PDO 連線因 MySQL 8 中的「未知字元集 (255)」而失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn