我正在尝试从symfony3应用程序连接到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;"
有什么想法吗?
10条答案
按热度按时间j2cgzkjk1#
我通过在/etc/my.cnf文件中添加以下代码解决了这个问题-
在保存之后,我进入我的系统设置,停止mysql服务器,然后重新启动,它成功了。
sg2wtvxw2#
在测试mysql和相关php系统的还原备份时,我遇到了与此非常类似的问题。不管我在mysql上添加了什么配置设置,都没有任何区别。在解决这个问题一段时间后,我在mysql日志中注意到mysql配置文件在很大程度上被mysql忽略了。原因是文件权限太开放,这是因为我的zip备份和还原过程正在丢失所有文件权限。我修改了备份和恢复脚本,改用tar,然后一切正常。
总之,检查mysql配置文件的文件权限是否正确。希望这对别人有帮助。
s1ag04yj3#
我的案例是,我使用的是aws的rds(mysql db verion 8),并通过ec2连接我的应用程序(我的php代码5.6在ec2中)。
在这种情况下,由于是rds,因此没有my.cnf,参数由aws的参数组维护。参考:https://docs.aws.amazon.com/amazonrds/latest/userguide/user_workingwithparamgroups.html
所以我做的是:
创建新的参数组,然后对其进行编辑。
搜索了所有字符集参数。默认为空。分别编辑它们并从下拉列表中选择utf8。
字符集客户端、字符集连接、字符集数据库、字符集服务器
保存
最重要的是,重新启动rds示例。
这解决了我的问题,从php5.6到mysql 8.x的连接运行得很好。
希望这有帮助。
请查看此图像以便更好地理解。在此处输入图像描述
nwwlzxa74#
mysql 8将默认字符集更改为utf8mb4。但有些客户不知道这个角色。因此,当服务器向客户机报告其默认字符集,而客户机不知道服务器的含义时,它抛出此错误。
另请参见https://bugs.mysql.com/bug.php?id=71606
这个bug是针对mysql连接器/c++的,所以它影响的不仅仅是php。
好吧,我把字符集改成utf8,以便与未升级的客户机兼容。我将此添加到/etc/my.cnf并重新启动mysqld:
我在2010年的一个答案中发现了这些设置:在my.cnf中将mysql默认字符集更改为utf-8?
uhry853o5#
我也有这个问题。问题是因为我运行的是旧版本的php(5.6),一旦升级到php7.4,错误就消失了。
这是在amazon linux 2上为我准备的,升级命令是:
amazon linux extras安装php7.4
其他版本的*nix可能在其存储库中有它,否则如果您使用的是linux版本,那么remi可能会在这里为您提供它:https://rpms.remirepo.net/
c2e8gylq6#
被接受的答案救了我(谢谢,比尔!!!),但我遇到了另一个相关的问题,只是想提供一些我的经验细节-
在升级到mysql 8.0.11之后,我在使用php的时候遇到了与op相同的问题
mysqli_connect()
功能。在mysql目录中(在我的例子中,usr/local/mysql
),我创建了my.cnf
文件中添加内容,然后重新启动mysql服务器。但是,这产生了一个新的错误:mysqli_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
我加了一行default_authentication_plugin = mysql_native_password
,所以my.cnf
现在看起来像:我很乐意去!
附加参考:https://github.com/laradock/laradock/issues/1392
jpfvwuh47#
我也面临同样的问题,所以我重新安装了mysql 8,使用不同的身份验证方法“使用遗留身份验证方法(保留mysql 5.x兼容性)”然后正常工作。
安装时选择第二种身份验证方法。
6ie5vjzr8#
我在连接本地系统时遇到了同样的问题。
我签入服务列表(run->services.msc->enter)wampmysqld64被停止。
重新启动它。并且可以登录。
nkcskrwz9#
适合我>
环境:
设置:
日期:
c:\programdata\mysql\mysql server 8.0\my.ini
不适用>
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
有帮助的工具:watbbzwu10#
查找节
[MySQLi]
在你的php.ini
并添加行mysqli.default_charset = "UTF-8"
. 类似的变化,我需要的部分[Pdo_mysql]
以及[mysqlnd]
.问题似乎特别是MySQL8.0版,上面的解决方案发现与PHP7.2版兼容,而解决方案与PHP7.0不兼容