首页 > 其他分享 >记一次存储emoji表情问题

记一次存储emoji表情问题

时间:2023-05-18 11:13:07浏览次数:39  
标签:schema 存储 name utf8mb4 字符集 table emoji your 表情

记一次存储emoji表情

问题原因

  1. mysql常用的字符集如下

    字符集: utf8mb3
    排序规则: utf8mb3 general_ci
    # 上面的字符集就是我们所说的普通的utf-8
    
    字符集:utf8mb4
    排序规则:utf8mb4 0900 ai ci
    
  2. 上述两种字符集想要存储emoji需要使用utf8mb4这种字符集

  3. 查询数据库的字符集

    SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = 'your_database_name';
    
  4. 查询表的字符集

    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';
    
  5. 查询字段的字符集

    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

问题解决方法

使用命令行

  1. 更改数据库字符集

    ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
    
  2. 更改表字符集

    ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  3. 更改字段字符集

    ALTER TABLE your_table_name MODIFY your_column_name TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

使用dbeaver

  1. 双击数据库名称,会出现如下内容,将图中标红的修改utf8mb4字符集,排序规则会随之改变

  2. 双击数据表名称,会出现如下内容,将图中标红的修改utf8mb4字符集,排序规则会随之改变

  3. 双击表字段名称,会出现如下内容,将图中标红的修改utf8mb4字符集,排序规则会随之改变

标签:schema,存储,name,utf8mb4,字符集,table,emoji,your,表情
From: https://www.cnblogs.com/liuweida/p/17411348.html

相关文章

  • 第一章 MySQL体系结构和存储引擎
    1.1定义数据库和实例数据库:物理操作系统文件或其他形式文件类型的集合实例:MySQL数据库由后台线程以及一个共享内存区组成在MySQL数据库中,实例与数据库的关系通常是一一对应的,即一个实例对应一个数据库,一个数据库对应一个实例MySQL数据库实例在系统上的表现就是一个进程MySQL......
  • RocketMQ之消息持久化存储源码分析
    一、原理1.1消息存在哪了?消息持久化的地方其实是磁盘上,在如下目录里的commitlog文件夹里。/root/store/commitlog源码如下://{@linkorg.apache.rocketmq.store.config.MessageStoreConfig}//数据存储根目录privateStringstorePathRootDir=System.getProperty("use......
  • 第92课作业,通过SerDes的方式对一下数据进行Hive的存储和查询操作
     第92课作业,通过SerDes的方式对一下数据进行Hive的存储和查询操作: 0^^Hadoop^^America^^5000|8000|12000|level8^^male1^^Spark^^America^^8000|10000|15000|level9^^famale2^^Flink^^America^^7000|8000|13000|level10^^male3^^Hadoop^^America^^9000|11000|12000|level10^^f......
  • 关于高本版docker24.0.0更改存储位置的方式-不同于20版本以下
    我以前使用18和19版本的docker时,更改docker存储位置都是通过以下方式,但是现在24版本的docker行不通了docker默认存储路径是/var/lib/docker,占用服务器根分区。容易导致磁盘空间占满。本文介绍通过system下修改配置文件,直接在配置文件中配置新的docker存储路径进行修改。1.......
  • mysql 底层数据存储结构
    内存和磁盘每次交互都是完整的页,数据页里面存放的是行(不仅仅是数据库的数据行,还有行格式等)页(16k,计算机与内存的最小单位)的上层单位还有区(一个区存放64个页,64*16k=1024k,刚好1M),区上面是段(一个或多个区组成),段上面是表空间(一个或多个段组成)行格式showtablestatuslike't_u......
  • mysql 存储引擎和索引
    存储引擎引擎特性文件InnoDB默认,支持事务,支持外键,支持行锁和表锁.frm文件存储表结构.ibd文件存储数据和索引MyISAM不支持事务,不支持外键,只支持表锁不支持行锁专门维护了一个常量保存每个表的总记录数(count很快)MyISAM强调的是性能,所以性能上优于InnoDB,但安全......
  • SqlServer查询存储过程和视图是否用到表字段
     查询存储过程视图是否用到表和字段selectnamefromsysobjectsassinnerjoinsyscommentsasoons.id=o.idwheretextlikeN'%表名%字段名%'--查询表字段SELECTOBJECT_NAME(object_id)'表名',nameAS'列名称'FROMsys.columns......
  • 关于C语言变量存储类型和生存期
    1、局部变量和全局变量1、局部变量  在函数的开头定义;在函数的复合语句内定义;在函数的外部定义。2、全局变量 在函数之外定义的变量是外部变量,外部变量就是全局变量(增加了函数数据联系)3、当全局变量和局部变量同名,在局部变量的作用范围内,局部变量有效,全局变量......
  • 一个程序设计业务中,如果需要这个表数据对应3种业务,但是唯独其中一种要多几个字段去展
    作为一个AI助手,我可以为您提供一些设计思路,但是最终的决定应该基于具体场景和业务需求。一种解决方案是在原表基础上新增字段。这种方法简单快捷,可以避免复杂的表关联,但是会使得表结构变得臃肿,不利于维护和拓展。如果这个表在后续的业务中还需要扩展字段,就会更加困难。另一种解......
  • 10.二级指针,指针的动态存储,常量与指针的结合、指针与数组的结合及指针函数
    二级指针的语法指针的动态存储常量指针和指针常量指针数组和数组指针指针和函数的结合二级指针的语法语法:数据类型**变量名 数据类型*变量名[常量]inta=10;int*p=&a;int**dp=&p;cout<<p<<""<<*dp<<""<<**dp;输出结果......