mysql关于包含表情昵称字段保存数据库失败问题处理
时间:2018-11-26 16:00:01
[导读]原来数据库结构CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_nickname` varchar(255) CH
原来数据库结构
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_nickname` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '抽奖用户昵称'
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
user_nickname 字段非 utf8mb4 保存表情符号报错。
insert into user (user_nickname) values (?)
java.lang.RuntimeException: org.hibernate.exception.GenericJDBCException: Incorrect string value: 'xF0x9Fx92xA5' for column 'user_nickname' at row 1
org.hibernate.exception.GenericJDBCException: Incorrect string value: 'xF0x9Fx92xA5' for column 'user_nickname' at row 1
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
解决办法:
修改字段编码类型为 utf8mb4
sql 语句: ALTER TABLE user MODIFY COLUMN user_nickname varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户昵称';
换一批
延伸阅读
1.什么Mysql的事务?事务的四大特性?事务带来的什么问题?
Mysql中事务的隔离级别分为四大等级:读未提交(READ UNCOMMITTED)、读提交 (READ COMMITTED)、可重...
想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里?
1. 能说下myisam 和 innodb的区别吗?
myisam引擎是5.1版本之前的默认引擎,支持全文检索、压...
写在前面
最近,在开发一个分库分表中间件,由于功能需求,需要分析MySQL协议,发现网上对于MySQL协议分析的文章大部分都过时了,原因是分析的MySQL版本太低了。怎么...
想进大厂,Mysql 不会那可不行,来接受 Mysql 面试挑战吧,看看你能坚持到哪里?
1. 能说下myisam 和 innodb的区别吗?
myisam引擎是5.1版本之前的默认引擎,支持全文检...
本文作者王良辰,京东中台架构师,擅长分布式系统及高可用、高并发系统架构与设计。曾经为企业开发过多个通用脚手架,推崇以技术手段提升开发效率、约束开发行为。
什么是Explain
Explai...
作者:游泳的石头
来源:http://39sd.cn/07EB1
什么是事务
事务是应用程序中一系列严密的操作,所有操...
前言
MySQL 死锁异常是我们经常会遇到的线上异常类别,一旦线上业务日间复杂,各种业务操作之间往往会产生锁冲突,有些会导致死锁异常。这种死锁异常一般要在特定时间特定数据和特定业务操作才会复现,并且分析解决时还...
在上一篇文章《用Explain 命令分析 MySQL 的 SQL 执行》中,我们讲解了 Explain 命令的详细使用。但是它只能展示 SQL 语句的执行计划,无法展示为什么一些其他的执行计划未被选择,比如说明明有索...
写在前面
最近,有小伙伴出去面试,面试官问了这样的一个问题:如何查询和删除MySQL中重复的记录?相信对于这样一个问题,有不少小伙伴会一脸茫然。那么,我们如何来完美的回答这个问题呢?今天,我们就一...