我正在尝试从 Symfony 3 应用程序连接到 MySQL 数据库。但是当尝试从 Symfony 控制台命令创建 MySQL 模式时,我收到此错误:PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers
PHP 和 MySQL 都在 Docker 容器中运行。
MySQL版本:8.0.1
PHP版本:7.1.3
驱动程序:pdo_mysql
字符集:UTF8
域名:"mysql:host=mysql;dbname=database;charset=UTF8;"
有什么想法吗?
最佳答案
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 年的答案中找到了这些设置:Change MySQL default character set to UTF-8 in my.cnf?
关于php - PDO::__construct():服务器向客户端发送了未知的字符集 (255)。请向开发商举报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53053118/