PDO 未知的 MySQL 字符集困境
当尝试通过 Symfony 3 应用程序连接到 MySQL 数据库时,您可能会遇到神秘错误消息“PDO::__construct(): 服务器向客户端发送了未知的字符集 (255)。请报告给开发商”。此问题源于服务器的默认字符集与客户端对其的理解不匹配。
背景
MySQL 版本 8.0.1 将其默认字符集更改为 utf8mb4 。然而,某些客户仍然不知道这一变化。因此,当服务器将其默认字符集传递给客户端时,无法识别的响应会触发上述错误。
解决方案
最佳解决方案是将客户端升级到承认 utf8mb4 的版本。但是,作为临时措施,您可以将服务器的字符集修改为 utf8 以适应未升级的客户端。这是通过将以下行添加到 /etc/my.cnf 来实现的:
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8
替代解决方案
另一个潜在的解决方案是强制设置 MySQL 连接字符集到一个特定的值。在你的 PDO 连接字符串中,你可以使用 charset 参数,如:
$dsn = "mysql:host=mysql;dbname=database;charset=utf8mb4;";
通过在 PDO 连接字符串中显式定义 charset,你可以绕过服务器的默认字符集并确保与升级后的服务器兼容。和未升级的客户端。
以上是为什么我的 Symfony 3 应用程序在连接到 MySQL 时出现'PDO::__construct(): 服务器发送的字符集 (255) 客户端未知”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!