MySQL查看、修改字符集及Collation

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

前言

在使用MySQL的过程中,可能会出现初始设计使用的字符集或Collation不符合当前需求的情况。如使用utf8的表(MySQL中的utf8即utf8mb3)要支持emoji,而utf8mb3不支持emoji(emoji需要4个字节,而utf8mb3最长只支持3个字节),所以需要将字符集修改为utf8mb4。

Collation即排列字符集,每个字符集都有对应一个或多个排列字符集。如某列使用utf8mb4_unicode_ci,当需要使用emoji搜索的时候,因为utf8mb4_unicode_ci可替换字符的原因,就可能出现查找出错误数据的结果。

真实事例

在公司项目中有个需要生成唯一emoji序列的需求。开发过程中没发现问题,在测试的过程中出现了因为重复插入失败的情况,但是在插入前已经查询过数据库没有发现有重复。为确认是否是程序的问题,直接通过prisma插入一个不存在的序列,但是还是出现了插入失败的情况。查询了数据库中该表的结构,发现使用的字符集是utf8mb4,确认了是支持emoji的。在纠结了快半天的时间后,发现了该列的排列字符集为utf8mb4_unicode_ci,该排列字符集会认为一些特定的emoji是可替代的导致了这个问题,在将该列的Collation修改为utf8mb4_bin后解决了问题。

获取当前支持的全部字符集及Collation

MySQL提供了SHOW CHARACTER SET命令查看当前所有的字符集,同时也提供了SHOW COLLATION命令查看所以的Collation。同时,MySQL也提供了SHOW CHARACTER SET LIKE 'charset_name'SHOW COLLATION WHERE Charset = 'charset_name'查看指定字符集和指定字符集的所有排列字符集的信息。

-- 查看所有字符集信息
SHOW CHARACTER SET;
-- 查看utf8字符集信息
SHOW CHARACTER SET LIKE 'utf8';

-- 查看所有排列字符集
SHOW COLLATION;
-- 查看utf8的所有排列字符集
SHOW COLLATION WHERE Charset = 'utf8';

在MySQL中,全部的字符集与排列字符集的

设置collation_database collation_server 写入mysql数据库时tomcat报错:Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation ‘=数据库字符集的不相符的问题: 用navicat打开数据库的命令行: 如图: 输入显示字符集命令: mysql>SHOW VARIABLES LIKE 阅读详情

相关推荐

Centos中改变MySQL的默认编码

1,打开 /etc/my.cnf 2,在里面加入如下 我的mysql没有[client]这个字段,首先添加上,在[client]段增加下面代码default-character-set=utf8 在[mysqld]段增加下面的代码 character-set-server=utf8 collation-server=utf8_general_ci如下图所示 使用show variab

勿忘初心,方得始终 1036

如何修改mysql数据库编码

修改字符集的方法,就是使用mysql的命令 mysql> SET character_set_client = utf8 ; mysql> SET character_set_connection = utf8 ;   使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8 +--------

abc583121179的专栏 1077

mysqlcollation

mysqlcollation大致的意思就是字符序。首先字符本来是不分大小的,那么对字符的>, = , < 操作就需要有个字符序的规则。collation做的就是这个事情,你可以对表进行字符序的设置,也可以单独对某个字段进行字符序的设置。一个字符类型,它的字符序有多个,比如: 下面是UTF8对应的字符序。 utf8_general_ci utf8 33 Yes Yes 1 ut...

weixin_34238642的博客 584

MySQL8.x】MySQL8.x 字符集设置

一、关于MySQL8.x 字符集 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能。 MySQL中utf8字符集使用三个字节编码一个字符,自2004(mysql4.1)年被引入,能够支持绝大多数语言,但依然有些字符不能正确编码,如表情字符,为此mysql5.5引入了utf8mb4字符集,提供了另一种选择。在mys...

michaelwoshi的博客 1万+

Mysql编码问题

mysql中文乱码 lmysql有六处使用了字符集,分别为:client、connection、database、results、server、system。 •client是客户端使用的字符集。 •connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。       •database是数据库服务器中某个库使

球球之家 782

数据库之MySQL字符集与数据库操作

这个库是通过视图的形式把information_schema 和performance_schema结合起来,查询出更加令人容易理解的数据。8.x doc MySQL Server 8.x(当前版本)默认的CharsetCollation是: utf8mb4 和 utf8mb4_0900_ai_ci。Information_schema — 主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信。定义: Collation — 在字符集内用于比较或排序字符的一套规则,即效验规则。

m0_70534578的博客 717

关于MySql字符集编码问题

关于MySql连接字符集编码问题关于数据库字符集编码mysql使用字符集的优先级功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 关于数据库字符集编码 假如客户端使用的是utf-8字符集,而数据库使用的是gbk字符集。现在客户端生成

weixin_42617321的博客 513

mysql 5.7.17 字符集设置_mysql(5.7.17)字符集设置(character_set/collation)

0 查看字符集(character_set/collation)use information_schema;desc tables; --一定记住tables表,information_schema中的metadata都可以查到-- 查看db的默认,DEFAULT_CHARACTER_SET_NAME/DEFAULT_COLLATION_NAMEselect * from schemata...

weixin_35619710的博客 764

mysql(5.7.17)字符集设置(character_set/collation)

0 查看字符集(character_set/collation) use information_schema;desc tables; --一定记住tables表,information_schema中的metadata都可以查到 -- 查看db的默认,DEFAULT_CHARACTER_SET_NAME/DEFAULT_COLLATION_NAMEselect * from...

aecuhty88306453的博客 775

mysql对英文忽略字符集_非英文网站如何使用MySQL字符集

使用 MySQL 字符 集 对于非英文网站,当他们使用非英语语言从数据库中写入或读取数据时,常常必须解决字符集的问题。字符集指导数据库哪种字符编码方案用于数据的写入读取,这样 可以简单地理解 为 字符集 的一个子集 整理 ,它告诉数据库如何存储数据。 今天使用 MySQL字符集对于非英文网站,当他们使用非英语语言从数据库中写入或读取数据时,常常必须解决字符集的问题。字符集指导数据库哪种字符编码方案...

weixin_39679468的博客 137

mysql 编码字符集配置

charsetcollation 有多个级别的设置:服务器级、数据库级、表级、列级和连接级  1.服务器级    查看设置:show global variables like 'character_set_server'; 和 show global variables like 'collation_server';    修改设置:在OPTION FILE (/etc/mys

clh604的专栏 929

MYSQLMYSQL学习的一大重点:MYSQL库的操作

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径将mytest库备份到文件(退出连接)这时,可以打开看看mytest.sql文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 2630

LINUX修改MYSQL字符集

<br />更改/etc/mysql/my.cnf文件,在[mysqld]和[mysql]下添加如下内容:<br />[mysqld] default-character-set=utf8 default-storage-engine=INNODB [mysql] default-character-set=utf8

192

MySql:charsetcollation的设置

MySql:charsetcollation的设置   charsetcollation 有多个级别的设置:服务器级、数据库级、表级、列级和连接级    www.2cto.com   1.服务器级    查看设置:show global variables like 'character_set_server'; 和 show global variables like 'col

haiross的专栏 1万+

MYSQL设置编码

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

inetworks 868

MySQL查看修改数据库字符集的方法

一、查看字符集 1.查看MYSQL数据库服务器和数据库字符集 方法一:show variables like '%character%'; 方法二:show variables like 'collation%'; 2.查看MYSQL所支持的字符集 3.查看库的字符集 语法:show database status from 库名 like 表名; 4.查看表的字符集 语法:sh...

huzecom的博客 5万+
上一篇: EC2中Redis迁移至ElastiCache记录
下一篇: 使用patch-package修改Node.js依赖包内容
ghosind
博客等级 码龄12年 133粉丝 69原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值