请向开发人员报告:PDO::__construct():服务器发送的字符集(255)客户端无法识别
P粉808697471
P粉808697471 2023-10-16 10:02:44
0
2
529

我正在尝试从 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粉364642019

升级到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现在看起来像:

[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8 default_authentication_plugin = mysql_native_password

我很高兴可以出发了!

更多参考:https://github.com/laradock/laradock/issues/1392

请注意 ARA1307 的评论:

“请注意,您应该创建新用户并明确指定“IDENTIFIED WITH mysql_native_password”,并更改现有用户,例如:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

    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学习者快速成长!