记一次存储emoji表情
问题原因
-
mysql常用的字符集如下
字符集: utf8mb3 排序规则: utf8mb3 general_ci # 上面的字符集就是我们所说的普通的utf-8 字符集:utf8mb4 排序规则:utf8mb4 0900 ai ci
-
上述两种字符集想要存储emoji需要使用utf8mb4这种字符集
-
查询数据库的字符集
SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = 'your_database_name';
-
查询表的字符集
SELECT CCSA.character_set_name FROM information_schema.`TABLES` T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = 'your_database_name' AND T.table_name = 'your_table_name';
-
查询字段的字符集
SELECT character_set_name FROM information_schema.`COLUMNS` WHERE table_schema = 'your_database_name' AND table_name = 'your_table_name' AND column_name = 'your_column_name';
如果上述查询结果又任何一项不是utf8mb4都无法写入emoji
问题解决方法
使用命令行
-
更改数据库字符集
ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
-
更改表字符集
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
更改字段字符集
ALTER TABLE your_table_name MODIFY your_column_name TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
使用dbeaver
-
双击数据库名称,会出现如下内容,将图中标红的修改utf8mb4字符集,排序规则会随之改变
-
双击数据表名称,会出现如下内容,将图中标红的修改utf8mb4字符集,排序规则会随之改变
-
双击表字段名称,会出现如下内容,将图中标红的修改utf8mb4字符集,排序规则会随之改变