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

java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\x94’ for column ‘name’ at row 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)

可以对4字节的字符进行编码存储,然后取出来的时候,再进行解码。但是这样做会使得任何使用该字符的地方都要进行编码与解码。

utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。

采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。

更改数据库的编码为utf8mb4:

1. MySQL的版本

utf8mb4的最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。

2. MySQL驱动

5.1.34可用,最低不能低于5.1.13

3.修改MySQL配置文件

修改mysql配置文件my.cnf(windows为my.ini)

my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容:

[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'

4. 重启数据库,检查变量

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

Variable_name

Value

character_set_client

utf8mb4

character_set_connection

utf8mb4

character_set_database

utf8mb4

character_set_filesystem

binary

character_set_results

utf8mb4

character_set_server

utf8mb4

character_set_system

utf8

collation_connection

utf8mb4_unicode_ci

collation_database

utf8mb4_unicode_ci

collation_server

utf8mb4_unicode_ci

collation_connection 、collation_database 、collation_server是什么没关系。

但必须保证

系统变量

描述

character_set_client

(客户端来源数据使用的字符集)

character_set_connection

(连接层字符集)

character_set_database

(当前选中数据库的默认字符集)

character_set_results

(查询结果字符集)

character_set_server

(默认的内部操作字符集)

这几个变量必须是utf8mb4。

5. 数据库连接的配置

数据库连接参数中:

characterEncoding=utf8会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。

而autoReconnect=true是必须加上的。

6. 将数据库和已经建好的表也转换成utf8mb4

更改数据库编码:ALTER DATABASE caitu99 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

更改表编码:ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATEutf8mb4_general_ci;

如有必要,还可以更改列的编码

mysql修改数据库编码mb4_更改MySQL数据库的编码为utf8mb4相关推荐

  1. mysql 修改库的校对集_mysql数据库的基本操作(增删改查、字符集、校对集)

    MySQL数据库概述 MySQL数据库是经典的关系型数据库管理系统,MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Dat ...

  2. mysql修改文件名_SQL语句实现附加数据库,可以改数据库物理文件名

    '数据库名','数据库全路径','数据库日志全路径' GO USE 数据库名 --添加一个登录前指定默认数据库 EXEC sp_addlogin '登录名','密码','数据库名' GO --处理空登 ...

  3. 修改mysql用户家目录,Linux 更改MySQL目录

    更改MySQL目录 MySQL默认的数据文件存储目录为/var/lib/mysql.假如要把目录移到/home/data下需要进行下面几步: 1.home目录下建立data目录 cd /home mk ...

  4. 如何修改服务器凭据,如何更改操作数据库帐户的用户凭据

    适用于: System Center 2012 SP1 - Service Manager,System Center 2012 R2 Service Manager,System Center 20 ...

  5. mysql 修改配置生效_linux下面MySQL变量修改及生效

    今天在访问mysql项目的时候突然报500错误,没有找到连接,因此想到mysql的连接时间. mysql> show global variables; 主要就是连接时间是28800(8小时), ...

  6. mysql修改存储引擎报错,MySQL改变表的存储引擎

    MySQL提供了多种数据库存储引擎,存储引擎负责MySQL数据库中的数据的存储和提取.不同的存储引擎具有不同的特性,有时可能需要将一个已经存在的表的存储引擎转换成另外的一个存储引擎,有很多方法可以完成 ...

  7. mysql修改语句_序言:MySQL与Navicat安装Tips

    一.数据库相关的基础知识 1.1 数据分析师主要集中在select高效查找上,纯粹的底层运维就不需要太关注: 1.2 数据库与表 类比sheet是表,整个Excel文件是一个数据库: 1.3 行与列 ...

  8. mysql修改启动command_MySQL Command Line[mysql命令行常用命令]

    MySql下载地址:www.mysql.org 第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql mysql -u用户名 -p用 ...

  9. 阿里云 mysql 修改密码_阿里云mysql修改密码

    MYSQL的密码我们并不经常修改,但有时我们会忘记密码需要修改,还会将密码更改为自己更容易记住的!下面介绍两种更改mysql密码的方法 方法一: 此方法主要是记得旧密码然后更改为新的密码 1)先输入m ...

最新文章

  1. Algorithms_入门基础_如何使用最高效的方式来判断一个数是否是2的N次方
  2. tensorflow基础
  3. oracle随机日期没有斜杠,收集awk的一些技巧,放到这里以方便今后查阅
  4. 算法设计与分析——贪心算法——多机调度问题
  5. Flask 应用部署方式之 Flask+Gunicorn+Nginx
  6. 公众号向特定用户主动推送消息_公众号助手——消息不仅可以群发,还不限制次数!...
  7. 每日一题(易错):哪些REPEAT_INTERVAL参数能够实现每30分钟运行job
  8. 名校大厂 AI 高手云集,芒果 TV 音视频算法大赛硕果累累
  9. 苹果:App Store中国区无版号游戏8月1日起下架;美国计划打造量子互联网;HHVM 4.67 发布 | 极客头条...
  10. 计算机技能大赛初赛主持稿,职业技能大赛开幕式主持词
  11. 2.5 分类模型评估指标—AUC与ROC及绘制混淆矩阵与ROC曲线
  12. Python之路-(列表、元组、字典、集合、字符串)
  13. Python,入门1
  14. Beego 使用笔记
  15. WebStorm2018.2 破解 激活
  16. CentOS7上实现Squid缓存服务器的两种模式
  17. 微信公众号教程(13)公司通讯录开发 上
  18. java简历制作注意点
  19. Linux下安装hbase
  20. intellij idea文件颜色代表的含义

热门文章

  1. Python剪切板操作
  2. 大学生日常之初学linux
  3. checkbox控件使用
  4. 我们无法驱散雾霾,但能教会你正确选戴口罩!
  5. 基于KNN算法——手写海伦约会(学习)
  6. 河南5年内3403名未成年在校生因实施犯罪受审-河南-在校生-犯罪
  7. python 四象限图_使用matplotlib绘制四象限图
  8. Robot Framework-DatabaseLibrary(MySql)
  9. 如何设置网络一直连接到服务器,windows10系统设置网络连接到服务器的方法
  10. Linux GRUB启动分析之stage1