因为服务器搬迁,顺便把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编码问题解决。