PHP连接操作MySQL数据库出错Server sent charset unknown to the client. Please, report to the developers
PHP连接MySQL数据库时出错,头大,这种配置环境的东西是最烦人的。。。。
以下是PHP代码
$conn = @mysql_connect("localhost","root","******");//连接数据库
//数据库连接密码不方便显示,用*号代替
mysql_select_db("school",$conn);//选择数据库
mysql_query("set names GBK");
if($conn){
echo "1";
}else{
echo "0";
}
mysql_close($conn);
代码采用的是最简单的方式-mysql(面向过程)去连接MySQL数据库。
- 首先设置主机名,一般我们测试都是在本机,写localhost就行。
- 然后是用户名,一般MySQL的用户名为root,如果你改过你的MySQL用户名,则用你修改后的用户名。
- 然后就是密码啦
- 再就是我们要连接的数据库名,我这里连接的是school数据库。
- 然后一个if判断,按照逻辑来说,数据库连接成功是出现1,失败是出现2!。
- 最后关闭MySQL连接。
但是出来的效果是这个。。
看到这么多错误的时候内心是很崩溃的。。。。
仔细看,所有的错误都是提示字符编码的问题。
在mysql命令行输入以下命令:
show variables like "character_set_%";
如图,我使用的MySQL版本为8.0.19
找了很多资料跟上了mysql官方说明文档才知道原来MySQL8.0已经已经把默认字符集升级成ut8mb4了。
所以我把MySQL的配置文件里的编码都从utf8mb4改为utf8!!!
但是我在命令行工具再次运行命令,出来的结果还是这样,改了一些,没有完全更改为utf8。。。。。。
还有两大顽固character-set-database和character-set-server没有改过来。。。
但是明明我配置文件已经改了,为什么还是没有配置成功呢???问号脸
再次查找资料,发现我漏了一个环节,改了配置文件之后应该是要重启MySQL服务的,但是我没有重启,所以有一些配置项是还没有生效的!!!
那么就重启MySQL服务咯。
输入命令
停止服务:
net stop mysql
启动服务:
net start mysql
出现以下效果说明已经重启成功!!!!
如果出现以下问题:
表明你当前角色的权限不够,需要进入管理员权限进行操作,现在我们返回桌面,以管理员身份运行cmd(如何以管理员进入cmd请自行百度),再次输入 net stop mysql 命令。这次mysql服务已经被我们成功停止了。
再次进入MySQL命令行工具,输入命令
show variables like "character_set_%";
成功了,成功了!!!!!
成功把MySQL8.0的默认字符集改回utf8。
马上回到PHP代码,运行起来!!!
之前出现的那堆错误终于没有再出来了!!!而且梦寐以求的连接成功显示的**“1”**也出来了!!!!
到此,PHP已经可以成功连接上MySQL数据库了,那接下来就是随便你发挥了!!!!!