说说从mysql5.7升级到mysql8遇到的编码和索引问题

13
0
0
2025-02-09 16:18
标签   MySQL

因为服务器搬迁,顺便把mysql升级下,毕竟mysql8都出来这么多年,整个过程还算顺利,记录下遇到的2个问题:

1. 索引问题,打开首页需要15秒:

只好用ip访问,然后在线上一步一步调试,最后发现是一条sql引起的,把这条sql放到mysql8一查询,果然很慢,放到mysql5.7里查询就很快。

select * from c_data where status=1 and order by time desc limit 8;

就这么简单的一条语句,在mysql5.7/mysql8上建立的联合索引status和time,貌似不起作用,所以我试着在mysql8上单独加上time的索引。

ALTER TABLE `c_data` ADD INDEX (`time` desc);

发现mysql8查询立马变成0.01秒,问题解决。

2. 数据库里的图标显示到网页上是乱码,看图:

刚开始以为是系统编码问题,结果我创建一片文章后,这些图标都能正常显示,我意味到这是mysql编码问题,网上查了下资料,发现原来我到处的sql用的是utf8编码,utf8并不支持存储图标和表情,先看原服务器的数据库编码:

show variables like 'char%';

可以看到client和connection用的都是utf8的编码

我们可以在/etc/my.cnf里加入一行并重启服务器:

[client]
default_character-set=utf8mb4

之后我们重新查下:

我们再把数据从mysql重新导出并导出新的mysql8数据库,发现数据显示正常,如下图:

mysql编码问题解决。

博主信息
博客数
181
昵称
性别
年龄
40
居住城市
上海市