MySQL将utf8字符集改为utf8mb4
- 前言
今天在查看tomcat日志时发现了一个错误:Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...' for column 'name' at row 1
在网上查找了说是mysql的字符集编码的问题,因为mysql的utf8编码最大是3个字节,而现在比较流行的emoji表情是四个字节的,所以导致mysql报错。MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。所以utf8mb4要比utf8浪费点空间,但是还是推荐使用utf8mb4,原因就是手机上网的用户太多了, 随便输入一个[emoji]表情mysql就存不了,其合理性可想而知。 - 解决方案
因为我们使用的是阿里云的rds mysql,所以不能修改配置文件,所以只能修改数据库和表和字段
#数据库 ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; #表 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; #字段 ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
然后我们使用sql语句检查表的编码
SHOW CREATE TABLE `user`;
- 关于mysql的字符集还是有很多知识的,比如utf8_bin与utf8_unicode_ci和utf8_unicode_cs还有utf8_general_ci和utf8_general_cs他们之间的区别与联系都可以了解一下哦
MySQL将utf8字符集改为utf8mb4的更多相关文章
- mysql中utf8字符集的设置及character_set_database属性修改
mariadb配置文件修改字符集: [mysqld] atadir=/usr/local/mysql/datasocket=/tmp/mysql.sock # Disabling symbolic-l ...
- mysql创建utf-8字符集数据库
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE 的语法:CREA ...
- mysql 建立utf8字符集数据库
CREATE DATABASE `evaluate` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
- mysql中utf8和utf8mb4区别
一.什么是utf8mb4 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超集,除 ...
- 浅谈mysql中utf8和utf8mb4区别
转自:http://ourmysql.com/archives/1402 实践过程中发现有时mysql的字符集会引起故障,所以需要了解下这个知识点. 一.简介 MySQL在5.5.3之后增加了这个u ...
- 清官谈mysql中utf8和utf8mb4区别
清官谈mysql中utf8和utf8mb4区别 发布时间:2015 年 10 月 4 日 发布者: OurMySQL 来源:JavaRanger - 专注JAVA高性能程序开发.JVM.Mysql优化 ...
- MySQL中 utf8与utf8mb4的区别
MySQL中 utf8与utf8mb4的区别 一.简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在 ...
- utf8改成utf8mb4实战教程
前言: 在 MySQL 中,系统支持诸多字符集,不同字符集之间也略有区别.目前最常用的字符集应该是 utf8 和 utf8mb4 了,相比于 utf8 ,utf8mb4 支持存储 emoji 表情,使 ...
- MySQL数据库 utf-8与utf8mb4
MySQL的“utf8”实际上不是真正的UTF-8. MySQL中的“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节. MySQL ...
随机推荐
- .net 获取配置文件AppSettings的键值
//AppSettings.config 节点代码 <appSettings> <add key="IsUpdate" value="false&quo ...
- 使用Nexus搭建私有Nuget仓库
前言 Nuget是ASP .NET Gallery的一员,是免费.开源的包管理工具,专注于在.Net / .Net Core应用开发过程中第三方组件库的管理,相对于传统单纯的dll引用要方便.科学得多 ...
- vs2017更新出错:The entire Box execution exiting with result code: 0x0
在将vs2017 15.7.4更新至15.9.5出现“The entire Box execution exiting with result code: 0x0”错误,也就是文件解压下载开始安装后, ...
- python调用函数超时设置
1.Windows中sign报错,Linux能很好的使用: https://pypi.python.org/pypi/timeout-decorator 2.Windows可以使用,Linux报错不能 ...
- Oracle:select into 查询没有记录的解决办法
在数据库编程中,select into 语句可以将数据库的某些值赋值给程序的变量,使用起来非常方便.但很多时候也会遇到查询出来没有记录的情况,这时程序会出错. 可以使用 exception when ...
- ElasticSearch本人启动报错总结
1.报错关键代码如下: Exception in thread "main" 2019-04-28 03:53:04,339 main ERROR No log4j2 config ...
- Qwt 编译 配置 使用
QWT,全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类, ...
- python爬取网页内容demo
#html文本提取 from bs4 import BeautifulSoup html_sample = '\ <html> \ <body> \ <h1 id = & ...
- 登录MES系统后台服务的操作
一:使用GIt Bash Here打开服务 文件名:MES-Server-API-SC 输入:yarn server//打开服务 文件名:MES-server-API 输入:yarn local//本 ...
- Android Studio的构建系统:Gradle
原文作者:youxiachai <用Gradle 构建你的android程序> 前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android st ...