Mysql 不能存储特殊字符

因为之前设计的时候使用的是utf-8编码,最多三个字节,而Emoji表情是四个字节,所以导致数据插不进去。

1.查看数据库编码格式

show variables like '%char%'

2.修改服务器mysql配置文件

2.1mysql安装路径

which mysqld

image.png

2.2.查看读取my.cnf文件顺序

/usr/sbin/mysqld --verbose --help | grep -A 1 'Default options'

image.png

2.3进入/etc/my.cnf修改配置文件

cd /etc
vim my.cnf
如果在上面路径中没有没有找到my.cnf文件
可以直接更改
cd /etc/mysql/mysql.conf.d
vim mysqld.cnf 

3.将如下配置加入到.cnf配置文件

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

4.重启MySQL

第一种方式
service mysqld stop  
service mysqld start
第二种方式
通过/etc/init.d/mysql执行stop命令 
通过/etc/init.d/mysql执行start命令
我使用第二种方式  第一种报错我的报错
Failed to start mysqld.service: Unit mysqld.service not found.

5.登陆MySQL修改表结构

alter database 数据库名称 character set =utf8mb4 collate=utf8mb4_unicode_ci;

alter table 表名 convert to character set utf8mb4 collate utf8mb4_unicode_ci;

alter table 表名 CHANGE 字段名 字段名varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

6.再次查看编码

show variables like '%char%'


image.png

上述完成之后,则可插入带有emoji表情符号的昵称

你可能感兴趣的:(Mysql 不能存储特殊字符)