php - “服务器向客户端发送未知字符集 (255)” 将 MySQL 字符集设置为 utf8 w/o /etc/my.cnf?
问题描述
我正在尝试从 phpMyAdmin 连接到 MySQL 数据库。但是当我输入用户名和密码时,我收到两条错误消息:
mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers
mysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers
我正在使用 MySQL 8.0.11 和 phpMyAdmin 4.8.2
我找到了类似问题的答案: PDO::__construct(): Server sent charset (255) unknown to the client。请向开发人员报告
这是重要的部分:“MySQL 8将默认字符集更改为utfmb4。但是有些客户端不知道这个字符集。因此,当服务器向客户端报告其默认字符集时,客户端不知道服务器的含义,它会引发此错误。”
给出的解决方案是通过在 /etc/my.cnf 中添加几行并重新启动 mysqld 将默认字符集更改回 utf8。
我的问题是 /etc/my.cnf 在我的文件中的任何地方都不存在,所以我无法在那里更改默认字符集。我查看的所有其他地方最终都引用了 /my.cnf 或引用了旧版本。
那么,如何在没有 /etc/my.cnf for MySQL 8 的情况下将默认字符集更改为 utf8?
解决方案
为了澄清答案:
my.cnf
在您的文件夹中创建一个名为的/etc/
文件。现在将以下文本添加到
/etc/my.cnf
:[客户端]
默认字符集=utf8[mysql]
默认字符集=utf8[mysqld]
排序服务器 = utf8_unicode_ci
字符集服务器 = utf8
default_authentication_plugin = mysql_native_password
最后,重启mysql,一切都会好起来的!如果仍有问题,请尝试将 PHP 升级到更高版本。
推荐阅读
- strawberry-perl - 如何在 Perl 中打印外部命令的过滤输出列表?
- node.js - node js 从 URL 获取 Zip 并上传到 Google 驱动器
- vb.net - Visual Basic 2019:尝试将行添加到 DataTable 时引发 ArgumentException
- vue.js - beforeMount 中 App 组件中的数据不可用
- docker - standard_init_linux.go:211:exec 用户进程在 Windows 上导致“没有这样的文件或目录”
- r - R中的多级回归荟萃分析:没有现有的包?
- excel - “无效的属性值”
- google-workspace - 域安装中的 G Suite 市场应用程序安装,提供卸载而不是启动应用程序
- python - 当组合权重小于节点权重时,放入队列的原因是什么?
- javascript - 如何知道文件是否下载完成?