Bitte melden Sie es den Entwicklern: PDO::__construct(): Vom Server gesendeter Zeichensatz (255) vom Client nicht erkannt
P粉808697471
P粉808697471 2023-10-16 10:02:44
0
2
712

Ich versuche, von einer Symfony 3-Anwendung aus eine Verbindung zu einer MySQL-Datenbank herzustellen. Aber wenn ich versuche, ein MySQL-Schema über den Symfony-Konsolenbefehl zu erstellen, erhalte ich diese Fehlermeldung: PDO::__construct(): 服务器发送了客户端未知的字符集 (255)。请向开发者报告

PHP und MySQL laufen beide in Docker-Containern.

MySQL-Version: 8.0.1

PHP-Version: 7.1.3

Fahrer:pdo_mysql

Zeichensatz:UTF8

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

Irgendwelche Ideen?

P粉808697471
P粉808697471

Antworte allen(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?

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage