mysql 修改字符集

当使用mysql添加或者修改数据时,会出现下面的错误

Incorrect string value: '\xF0\x9F\x91\x93\xF0\x9F...' for column 'xxx' at row

一般来说,数据库数值utf8字符的时候,在存储普通字符串时是没有什么问题,但是当我们有特殊符号时(如emoji表情符号,以及转化成utf8格式需要4个字符所有字符),在存储的时候就会出现上面的错误.

在mysql里面utf8最长支付3个字符集,而某些unicode转成utf8,需要4个字符集,所以需要设定特殊的字符集,比如修改成utf8mb4

查看我们数据库的字符串

how variables like ‘char%’;
+————+—————————-+————————+———-+
| Charset | Description | Default collation | Maxlen |
+————+—————————-+————————+———-+
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
+————+—————————-+————————+———-+
看最后的maxlen是3,也就是最长只能存3个字符

解决办法

1.修改数据库字符集
2.修改表字符集

修改数据库字符集

1.修改数据库字符集
修改数据库字符集方法有2种,一种是命令修改,一种直接修改配置文件
修改mysql配置文件,设置默认字符集utf8mb4, 包括collation

[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’

2.用命令修改
use到当前的数据库中,修改字符集
mysql>use mydb
mysql>alter database mydb character set utf-8;

修改表字符集

ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容