我正在try 从Symfony 3应用程序连接到MySQL数据库.但是当试图从Symfony控制台命令创建MySQL模式时,我得到了一个错误:PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers

PHP和MySQL都在Docker容器中运行.

MySQL版本:8.0.1

PHP版本:7.1.3

司机:pdo_mysql

字符集:UTF8

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

有什么 idea 吗?

推荐答案

MySQL 8将默认字符集更改为utf8mb4.但有些客户不知道这个角色.因此,当服务器向客户机报告其默认字符集,而客户机不知道服务器的意思时,它会抛出此错误.

另见第https://bugs.mysql.com/bug.php?id=71606

这个bug是针对MySQL连接器/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年的答案中找到了这些设置:Change MySQL default character set to UTF-8 in my.cnf?

Mysql相关问答推荐

根据当前表列的值,从SQL中的另一个表中获取数据

基于多行从表中 Select

从表中 Select 具有不同顺序的列

使用 awk 重写 maxscale 过滤器

GoRM中行最大值查询返回"0"

如何用sql找出两次之间的差异

SQL查询以查找两个特定行的总和

错误1075:表定义不正确;只能有一个自动列,它必须定义为一个键(使用 gorm 和 mysql)

SQL使用LIMIT获取结果和结果中的行数

为什么order by子句可以利用索引?

无法通过迁移在现有表中插入行 - Rails 6

MYSQL LOAD DATA INFILE 语句适用于工作台,但不适用于 python

添加一个日期字段大于另一个日期字段的要求

估计行数 SQL

如何在不违反唯一约束的情况下交换 MySQL 中两行的值?

在 MySQL 中检测 utf8 损坏的字符

何时在 mysql 中使用 TEXT 而不是 VARCHAR

在mysql中复制没有数据的数据库 struct (带有空表)

如何计算表格的列数

我可以在 PHP 中使用 PDO 创建数据库吗?