项目场景:mysql 5.7.34储存表情的踩坑记录
问题描述:
项目中存到mysql的字符串中有表情字符串,查了很多资料都需要把mysql的编码变换成utf8mb4。 但是我把数据库的字段都变成utf8mb4编码格式后还是不能存字符串。明明编码格式都换了还是不行。
原因分析:
- 数据库的编码格式是utf8mb4
- 数据库表的编码格式是utf8mb4
- 数据库表的字段编码格式是utf8mb4
解决方案:
1.先使用下面的命令查看mysql的编码格式
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
查看对应的字段的编码格式是否是下面 如果上面查询结果不一样就去配置mysql,下面是我的配置
#################主要看这个里面的##########################
[client]
port=3306
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
port=3306
#character_set_server=utf8mb4
character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
############################################################
#这些配置不重要,主要是看上面的配置
basedir=D:\mysql\mysql-5.7.34-winx64
#解压目录
datadir=D:\mysql\mysql-5.7.34-winx64\data
#解压目录下data目录
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
D:\mysql\mysql-5.7.34-winx64\bin\mysqld.exe
配置完mysql一定要重启
查阅资料到这里就可以储存表情了。但是我的还是不行,于是我接着排查。 发现自己的数据库表的字段的编码还是utf8,所以我把字段的编码格式改完以后就可以了
由于我的数据库的表是早就建好的,后来才改的编码格式,虽然改变了数据库和数据库表的编码格式,但是表的字段的编码格式没有改过来导致一直失败
|