2017-04-16 15 views
4

我試圖從Symfony 3應用程序連接到MySQL數據庫。但是,當試圖從Symfony控制檯命令創建MySQL架構時,出現此錯誤:PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developersPDO :: __構造():服務器發送字符集(255)未知的客戶端。請向開發人員報告

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

MySQL版本:8.0.1

PHP版本:7.1.3

司機:pdo_mysql

字符集:UTF8

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

任何想法?

回答

3

MySQL 8將默認字符集更改爲utfmb4。但有些客戶不知道這個字符集。因此,當服務器將其默認字符集報告給客戶端,並且客戶端不知道服務器的含義時,會引發此錯誤。

又見https://bugs.mysql.com/bug.php?id=71606

這個bug是針對MySQL的連接器/ 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年:Change MySQL default character set to UTF-8 in my.cnf?

+0

謝謝,但沒有奏效 - 同樣的錯誤。 – Napas

+0

它在我的環境中工作。 MySQL 8.0.1,PHP 7.1.4。你重新啓動了mysql服務嗎? –

+1

僅供參考:https://bugs.php.net/bug.php?id = 74461查看nikic的評論,顯然這已經在PHP源代碼中修復,我認爲它將在不久的將來發布。 –

相關問題