了解PDO::__construct() 錯誤:伺服器發送未知字元集
嘗試時遇到PDO::__construct() 錯誤當伺服器傳輸客戶端不傳輸的字元集(255)時,從Symfony 3 連接到MySQL 資料庫就會出現認可。出現此問題的原因是 MySQL 8.0.1 中的更新,它採用 utf8mb4 作為預設字元集。
儘管 MySQL 和 PHP 在 Docker 容器中運行,但客戶端仍然不知道新的字元集。因此,它將伺服器的回應解釋為未知值並觸發此錯誤。
解決方案:升級客戶端
根本解決方案涉及升級客戶端。透過納入對 utf8mb4 的支持,客戶端可以有效地與伺服器通訊並解決問題。此升級可確保與變更後的字元集的兼容性。
臨時解決方法:修改伺服器的字元集
或者,存在臨時解決方法以保持與未升級客戶端的兼容性。透過將伺服器的字元集變更為 utf8,它可以滿足舊客戶端的限制。此調整可以透過修改/etc/my.cnf 檔案並使用以下設定重新啟動mysqld 來實現:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8
雖然此解決方法解決了眼前的問題,但升級客戶端仍然是首選和長期的確保最佳相容性和性能的解決方案。
以上是為什麼 Symfony 3 中 PDO::__construct() 失敗並顯示「伺服器發送未知字元集」以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!