阿里云RDS MySQL主机配置支持emoji
来源:互联网 发布:淘宝米兰春天袜子? 编辑:程序博客网 时间:2024/05/18 01:55
最近做了一次数据迁移,将传统机房的MySQL转到阿里云;
一方面是基于数据安全性和维护成本考虑;另外一方面确实要也对原有的数据库进行功能升级;
老的数据库版本是5.1.x,只支持utf-8格式的编码;对于目前流行的emoji表情是无法存储的;因为utf-8一个字符最多存储3个字节;而目前大部分emoji表情是4字节的;
那么问题来了,怎么解决这个问题呢? 新版的数据引入了utf8mb4格式编码,这个编码的子集是包含了utf-8的,所以在切换数据库编码、数据表编码、字段编码操作的时候
无需考虑是否不兼容,是否会乱码,大胆地切就行了;
具体错误提示如下:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x81' for column xxx
uncategorized SQLException for SQL []; SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\x9F\x98\x81'
在购买阿里云RDS主机时,一定要选择5.6以上的版本;5.6以上的版本才支持utf8mb4刚才已经提到了;
由于是做数据迁移,我这边是要将一个原本utf-8格式的库迁移到阿里云上去,具体操作如下:
1、建立一个新的数据库、编码设置为utf8mb4
2、创建数转移任务,将老库的数据转移到新库中,注意迁移时将目标库编辑成刚才我们创建的那个数据库名称,这个操作相当于将老库的全部表迁移到新库中;
3、接下来完成迁移后,修改配置文件:
注意:修改这个参数要重启实例,重启过程可能造成服务闪断,这个是没办法的;
更多配置可以参考阿里云官方文档:
https://selfservice.console.aliyun.com/ticket/scene?productCode=rds&productName=%E4%BA%91%E6%95%B0%E6%8D%AE%E5%BA%93%2BRDS%E7%89%88
这些配置完成以后,意味着你的数据库已经支持utf8mb4了,也就是可以插入emoji表情了;但是以下几步也非常重要,否则也无法使用utf8mb4编码:
1、将需要支持utf8mb4的数据表设置为:utf8mb4编码格式:
语法为:ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
例如:LTER TABLE `my_table` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2、将需要支持的数据表字段,注意是字段也要设置为utf8mb4编码格式:
语法为:ALTER TABLE 表名 CHANGE 字段名 字段名 类型 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
例如:ALTER TABLE my_user CHANGE content content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
应用层需要注意的:
1、JDBC的版本必须大于5.1.13版本;
2、大部分问题都在MySQL这边,应用层问题较少;什么数据库连接字符串、连接池、Spring、mybatis什么的,根本不用做改动!
到这里,整个操作就完成了;enjoy!
- 阿里云RDS MySQL主机配置支持emoji
- 【emoji表情】阿里云数据库RDS支持emoji表情
- 【emoji表情】阿里云数据库RDS支持emoji表情
- 阿里云rds mysql数据设置字符集为utf8mb4,支持ios的emoji
- 阿里云 RDS SDK python3支持
- 阿里云主机配置
- 试用阿里云RDS
- 试用阿里云RDS
- 【阿里云RDS】从本地MySQL迁移到RDS for MySQL
- 阿里RDS中插入emoji 表情插入失败的解决方案
- 试用阿里云RDS的MySQL压缩存储引擎TokuDB
- 试用阿里云RDS的MySQL压缩存储引擎TokuDB
- 使用阿里云ECS自建RDS MySQL从库
- 阿里云RDS(mysql)异机全量增量恢复
- 一个阿里云 MYSQL 服务 RDS 下的查询优化
- 阿里云 RDS下 mysql 查询字段 灵活区分大小写
- 阿里云(ECS+RDS)部署PHP+MySQL网站初探
- 阿里云RDS数据恢复到本地MySQL数据库
- centos vi 使用
- UIDocumentInterRactionController 使用时的注意事项(其它应用打开)
- 【广告】win10 uwp 水印图床 含代码
- php的常用的正则判断
- qemu vl.c源码学习
- 阿里云RDS MySQL主机配置支持emoji
- 自定义微信公众号菜单一二级选项(一)
- VS2010 c++ 错误的处理方法
- iOS 用命令实现简单的打包过程
- javascript拖拽时改变盒子的尺寸(宽高)
- 【Unity UI】实时得分等UI的显示
- Android中View和ViewGroup介绍
- 字符串截取函数
- setUserVisibleHint 多层嵌套如何解决