Php PDO::_construct():服务器发送了客户端未知的字符集(255)。请向开发商报告
我正在尝试从Symfony 3应用程序连接到MySQL数据库。但是,当尝试从Symfony控制台命令创建MySQL架构时,我遇到以下错误:Php PDO::_construct():服务器发送了客户端未知的字符集(255)。请向开发商报告,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试从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;” 有什么想法吗?M
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;”
有什么想法吗?MySQL 8将默认字符集更改为utf8mb4。但有些客户不知道这个字符集。因此,当服务器向客户机报告其默认字符集,而客户机不知道服务器的意思时,就会抛出此错误 另见 这个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年的回答中发现了这些设置:MySQL 8将默认字符集更改为utf8mb4。但有些客户不知道这个字符集。因此,当服务器向客户机报告其默认字符集,而客户机不知道服务器的意思时,就会抛出此错误 另见 这个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年的答案中发现了这些设置:被接受的答案救了我(谢谢,比尔!!!),但我遇到了另一个相关问题,只是想提供一些关于我经历的细节- 升级到MySQL 8.0.11后,我在使用PHP的
mysqli_connect()
函数时遇到了与OP相同的问题。在我的MySQL目录中(在我的例子中是usr/local/MySQL),我创建了my.cnf
文件,在接受的答案中添加了内容,然后重新启动MySQL服务器。但是,这产生了一个新的错误:
mysqli\u connect():服务器请求的身份验证方法客户端未知[缓存\u sha2\u密码]
我添加了行default\u authentication\u plugin=mysql\u native\u 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
我很乐意去
作为补充参考:被接受的答案救了我(谢谢,比尔!!!),但我遇到了另一个相关问题,只是想提供一些关于我经历的细节- 升级到MySQL 8.0.11后,我在使用PHP的
mysqli_connect()
函数时遇到了与OP相同的问题。在我的MySQL目录中(在我的例子中是usr/local/MySQL),我创建了my.cnf
文件,在接受的答案中添加了内容,然后重新启动MySQL服务器。但是,这产生了一个新的错误:
mysqli\u connect():服务器请求的身份验证方法客户端未知[缓存\u sha2\u密码]
我添加了行default\u authentication\u plugin=mysql\u native\u 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
我很乐意去
作为补充参考:我在连接到本地系统时遇到了同样的问题 我签入服务列表(Run->services.msc->Enter)wampmysqld64已停止
重新启动它。并且能够登录。我在连接本地系统时遇到了同样的问题 我签入服务列表(Run->services.msc->Enter)wampmysqld64已停止
重新启动它。并且能够登录。在您的
php.ini
中查找节[MySQLi]
,并添加行MySQLi.default\u charset=“UTF-8”
。我需要对[Pdo_mysql]
和[mysqlnd]
进行类似的更改
问题似乎特别是MySQL 8.0版和以上版本的解决方案与PHP 7.2版兼容,而解决方案与PHP 7.0不兼容,请在
PHP.ini
中查找section[MySQLi]
,并添加行MySQLi.default\u charset=“UTF-8”
。我需要对[Pdo_mysql]
和[mysqlnd]
进行类似的更改
问题似乎特别是MySQL版本8.0,上面的解决方案发现与PHP版本7.2兼容,而解决方案与PHP 7.0不兼容对我有效>
环境:
localhost
Windows 10
PHP 5.6.31
MYSQL 8
设置:
关于:
c:\programdata\mysql\mysql服务器8.0\my.ini
- 不适用于>
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -u root -p
mysql> show variables like 'char%';
mysql> show variables like 'collation%';
\m/
为我工作>
环境:
localhost
Windows 10
PHP 5.6.31
MYSQL 8
设置:
关于:
c:\programdata\mysql\mysql服务器8.0\my.ini
- 不适用于>
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -u root -p
mysql> show variables like 'char%';
mysql> show variables like 'collation%';
\m/
我通过在我的/etc/my.cnf文件中添加以下代码解决了这个问题-
保存之后,我进入我的系统设置,停止MYSQL服务器并重新启动,它成功了 我通过在我的/etc/my.cnf文件中添加以下代码解决了这个问题-
保存之后,我进入我的系统设置,停止MYSQL服务器并重新启动,它成功了 我也面临同样的问题,所以我用不同的身份验证方法重新安装了MySQL 8“使用旧身份验证方法(保留MySQL 5.x兼容性)”然后正常工作
安装时选择第二种身份验证方法。我遇到了相同的问题,因此我使用不同的身份验证方法重新安装了MySQL 8“使用旧身份验证方法(保留MySQL 5.x兼容性)”,然后正常工作 选择第二种身份验证方法