PDO::__construct():服务器发送了客户端未知的字符集 (255)。请向开发人员报告
我正试图从 Symfony 3 应用程序连接到 MySQL 数据库。但是,当我试图通过 Symfony 控制台命令创建 MySQL 模式时,却出现了以下错误:`PDO::__construct():服务器发送了客户端未知的字符集 (255)。请向开发人员报告
PHP 和 MySQL 都在 Docker 容器中运行。
MySQL 版本:`8.0.1
PHP 版本:`7.1.3
驱动程序: pdoo_mysql
.
字符集: `UTF8UTF8
dsn: "mysql:host=mysql;dbname=database;charset=UTF8;"
有什么想法吗?
28
3
MySQL 8 将默认字符集改为 utfmb4。但有些客户端不知道这种字符集。因此,当服务器向客户端报告其默认字符集,而客户端不知道服务器的意思时,就会抛出这个错误。
另请参阅 https://bugs.mysql.com/bug.php?id=71606
该错误针对的是 MySQL Connector/C++,因此影响的不仅仅是 PHP。
好吧,为了与未升级的客户端兼容,我把字符集改成了 utf8,这样就能正常工作了。我将其添加到 /etc/my.cnf 并重新启动了 mysqld:
我在 2010 年的一个答案中找到了这些设置:https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf
已接受的答案救了我(谢谢,比尔!!!),但我遇到了另一个相关问题,只想提供一些我的经验细节--
升级到 MySQL 8.0.11 后,在使用 PHP'
mysqli_connect()
函数时,我遇到了与 OP 相同的问题。我在 MySQL 目录(在我的情况下是usr/local/mysql
)中创建了my.cnf
文件,添加了接受的答案中的内容,然后重新启动了 MySQL 服务器。然而,这又产生了新的错误:mysqli_connect():服务器请求了客户端未知的验证方法 [caching_sha2_password]`
我添加了 "default_authentication_plugin = mysql_native_password "一行,所以 "my.cnf "现在看起来像这样:
这样我就可以开始工作了!
其他参考资料: https://github.com/laradock/laradock/issues/1392
我在连接本地系统时也遇到了同样的问题。
我在服务列表(Run->Services.msc->Enter)中检查了 wampmysqld64 是否已停止。
重新启动后就可以登录了。