前言

  • MySQL 操作版本: 5.7.26

为什么要使用 utf8mb4?

最直接的理由可以参考这两个:

  • How to support full Unicode in MySQL databases。
  • 如果遇到错误 Incorrect string value: ‘\xF0\x9F\x92\x94’ 也需要升级到 utf8mb4 。

比较完整的理由:

  • utf-8编码按照3个字节一个单位进行编码, 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。因此,任何不在基本多文本平面的 Unicode字符,都无法使用 utf-8 字符集存储。比如,Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),不常用的汉字,任何新增的 Unicode 字符等等。
  • utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。

MySQL 支持 utf8mb4 的版本

MySQL 5.5.3 开始支持 utf8mb4。

创建新的库

创建数据库时使用 utf8mb4

CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

创建表时使用 utf8mb4

CREATE TABLE `account` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`nickname` varchar(50) NOT NULL COMMENT '名称',PRIMARY KEY (`id`),UNIQUE KEY `uk_name` (`nickname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT='账号';

升级已有的库

升级MySQL

  • 先备份数据库
  • 确保MySQL 版本 >= 5.5.3
  • 配置mysql.ini
[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'

操作完成后记得重启MySQL

升级库和表

升级库:

ALTER DATABASE yourdbname CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

升级表:

ALTER TABLE yourtablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

升级字段:

ALTER TABLE yourtablename CHANGE column_name new_column_name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

参考

How to support full Unicode in MySQL databases
Mysql UTF-8mb4字符集的问题
彻底解决:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\x94’ for column ‘name’ at row 1

mysql 使用 utf8mb4 编码相关推荐

  1. MySQL设置utf8mb4编码

    有一个项目需要存储ios的表情(emoji表情) 这种表情虽然是utf8编码,但是一个字符需要占用4个字节,而MySQL utf8编码只能存放3字节的字符. 在MySQL 5.6中,可以设置编码为ut ...

  2. php mysql utf8mb4,MySQL设置utf8mb4编码

    有一个项目需要存储ios的表情(emoji表情),这种表情虽然是utf8编码,但是一个字符需要占用4个字节,而MySQL utf8编码只能存放3字 有一个项目需要存储ios的表情(emoji表情) 这 ...

  3. mysql 运行sql 编码_关于解决运行 sql 文件时, 找不到 MySQL 默认编码 utf8mb4 的问题...

    关于解决运行 sql 文件时, 找不到 MySQL 默认编码 utf8mb4 的问题 本人小白一名, 最近碰到了一个问题, 在 navicat 导入 MySQL 文件时, 报出 MySQL 找不到 u ...

  4. 修改mysql用utf8mb4_更改MySQL数据库的编码为utf8mb4

    原文:http://blog.csdn.net/woslx/article/details/49685111 utf-8编码可能2个字节.3个字节.4个字节的字符,但是MySQL的utf8编码只支持3 ...

  5. mysql utf8mb4 配置_MariaDB(Mysql)配置utf8mb4编码

    在配置完MariaDB(MySQL) Linux服务器环境后,发现windows MySQL上使用的是utf8mb4编码,而服务器端MariaDB(MySQL)还是默认使用utf8进行编码,导出的sq ...

  6. mysql 更改数据库编码_更改MySQL数据库的编码为utf8mb4

    utf-8编码可能2个字节.3个字节.4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符.如果直接往采用utf-8编码的数据库中插入表情数据,Java程 ...

  7. mysql改utf8mb4后速度慢_更改MySQL数据库的编码为utf8mb4

    更改MySQL数据库的编码为utf8mb4 utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符. 采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑微信昵称 ...

  8. mysql utf8mb4 php_MySQL设置utf8mb4编码_MySQL

    有一个项目需要存储ios的表情(emoji表情) 这种表情虽然是utf8编码,但是一个字符需要占用4个字节,而MySQL utf8编码只能存放3字节的字符. 在MySQL 5.6中,可以设置编码为ut ...

  9. mysql修改7tf8mb4_更改MySQL数据库的编码为utf8mb4

    utf-8 编码可能2个字节.3个字节.4个字节的字符,但是 MySQL 的 utf8 编码只支持3字节的数据,而移动端的表情数据是4个字节的字符.如果直接往采用 utf-8 编码的数据库中插入表情数 ...

最新文章

  1. gsoap 学习 1-自己定义接口生成头文件
  2. windows server 2008 - 创建域和本机用户
  3. python双轴折线图是什么意思_操作-简易图形-折线图
  4. 程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦
  5. 软件测试都需要哪些工具呢?一文带你看清
  6. repo start master --all 和repo start --all master区别
  7. 要做网络营销 这样的讲座不能错过
  8. 互联网架构师祝大家中秋节快乐!快领红包了!
  9. html图像设计代码,html——图像设计(示例代码)
  10. 计算机硬盘中没有设控制器,电脑设置硬盘为兼容模式
  11. 查看服务器阵列卡型号6,怎么查看 dell 阵列卡型号#如何通过服务器自检画面的信息查看当前阵列卡的型号...
  12. 项目管理术语英汉对照表
  13. 小白入门——关于什么是区块链
  14. 在服务器上离线下载并在线播放 Cloud Torrent
  15. 用H5 canvas实现唯美渐变色块的绘制
  16. 51单片机hc-sr04超声波模块控制的c语言编程,基于STM32单片机对HCSR04超声波的控制...
  17. java中void和int的意思_c语言void和int的区别
  18. 网络虚拟化之virtio-net和vhost
  19. MongoDB数据库运维工具的使用
  20. c语言括号表示法画树怎么画,树的画法分类讲解

热门文章

  1. MongoDB学习笔记~地图坐标的支持与附近点的查找
  2. jvm Classload method介绍
  3. 桌面快捷键和桌面livefolder
  4. PDB命令行调试Python代码
  5. Winform将网页生成图片
  6. Dora.Interception: 一个为.NET Core度身定制的AOP框架
  7. 用ajax技术实现无闪烁定时刷新页面
  8. ASP.NET页面对象模型:Page类介绍
  9. 删除rabbitmq的队列和队列中的数据
  10. Python机器学习笔记:XgBoost算法(亲测)