請向開發人員報告:PDO::__construct():伺服器發送的字元集(255)用戶端無法識別
P粉808697471
P粉808697471 2023-10-16 10:02:44
0
2
353

我正在嘗試從 Symfony 3 應用程式連接到 MySQL 資料庫。但是當嘗試從 Symfony 控制台命令建立 MySQL 模式時,我收到此錯誤: PDO::__construct(): 伺服器發送了客戶端未知的字元集 (255)。請向開發者報告

PHP 和 MySQL 都在 Docker 容器中運作。

MySQL版本:8.0.1

PHP版本:7.1.3

驅動程式:pdo_mysql

字元集:UTF8

dsn: "mysql:host=mysql;dbname=database;charset=UTF8;"

有什麼想法嗎?

P粉808697471
P粉808697471

全部回覆(2)
P粉884548619

MySQL 8 將預設字元集變更為 utf8mb4。但有些客戶不知道這個字符集。因此,當伺服器向客戶端報告其預設字元集,而客戶端不知道伺服器的含義時,就會拋出此錯誤。

另請參閱https://bugs.mysql.com/bug.php?id= 71606

該錯誤是針對 MySQL Connector/C 的,因此它影響的不只是 PHP。

正確的解決方案是升級客戶端,但與此同時,我透過將伺服器的字元集更改為 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

我在 2010 年的答案中找到了這些設定:將 my.cnf 中的 MySQL 預設字元集更改為 UTF-8?

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!