php在连接mysql时为啥会包这样的错误?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php在连接mysql时为啥会包这样的错误?相关的知识,希望对你有一定的参考价值。

php在连接mysql时为什么会包这样的错误

语法有问题,提示了第二行错误,检查语句,最好做个输出,连接成功返回一个输出,不然你都不知道有没有连上,一步步排查 参考技术A @是用来屏蔽错误信息的,不知道是你的字符有问题还是不能用在new前面(不怎么用,忘了具体细节)。你可以先吧@删除了,在这一句前面用error_reporting来控制错误信息的显示。 参考技术B 这个@是个什么鬼,语法错误

[HY000] [2054] php连接mysql时错误

会出现这样的原因,主要都是因为mysql8.0版本的缘故,8.0版本默认编码为utf8mb4
解决方法:
MySQL配置文件my.ini中[mysqld]下加这两行

character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci

然后又出现了另一个问题:The server requested authentication method unknown to the client
也是由于mysql版本缘故,8.0版本mysql账号密码解锁机制不一致
在数据库操作界面输入命令
ALTER USER ‘root‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘账户密码‘;即可

或者在MYSQL配置文件my.iniz中[mysqld]下加入
default_authentication_plugin=mysql_native_password

以上是关于php在连接mysql时为啥会包这样的错误?的主要内容,如果未能解决你的问题,请参考以下文章

DBeaver 错误 2013:与 MySQL 的连接丢失。为啥?

为啥我在使用 JDBC 和 MySQL 的 JSP 中出现连接失败错误

使用jdbc连接mysql为啥报错?

为啥在 PHP 中建立与 MySQL 的连接大约需要 2 秒?

在Linux下php连接mysql数据库遇到2002错误

为啥 PHP docker 容器无法查找 MYSQL 容器的主机名?