Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL生僻字插入失败的处理方法

MySQL生僻字插入失败的处理方法

作者头像
保持热爱奔赴山海
发布于 2019-09-18 07:33:09
发布于 2019-09-18 07:33:09
2K0
举报
文章被收录于专栏:数据库相关数据库相关

最近,业务方反馈有个别用户信息插入失败,报错提示类似"Incorrect string value:"\xF0\xA5 ..... "   看这个提示应该是字符集不支持某个生僻字造成的。

下面是在虚拟机里复现的场景:

step1、模拟原始表结构字符集环境:

use test;

CREATE TABLE `t1` (

  `id` int(10) NOT NULL AUTO_INCREMENT,

  `real_name` varchar(255) CHARACTER SET utf8 DEFAULT '' COMMENT '姓名',

  `nick` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '昵称',

  PRIMARY KEY (`id`)

) ENGINE=InnoDBAUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员卡';

step2、插入生僻字(使用sqlyog模拟):

1、先模拟线上环境,设置下字符集:

2、插入生僻字(生僻字可以参考:http://www.qqxiuzi.cn/zh/hanzi-unicode-bianma.php?zfj=kzb&ks=24E20&js=257E3)

我们尝试插入王(在word里面按住alt,输入152964)。可以看到插入失败了。

step3、修改real_name的字符集:

use test;

alter table t1 change real_name real_name  varchar(255) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '姓名' ;

如果是线上大表的话,可以使用pt-osc来处理,命令如下:

pt-online-schema-change -uroot -h localhost --alter=" change real_name real_name  varchar(255) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '姓名' " D=test, t=t1 --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --quiet --charset=utf8mb4 --dry-run

pt-online-schema-change -uroot -h localhost --alter=" change real_name real_name  varchar(255) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '姓名' " D=test, t=t1 --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --quiet --charset=utf8mb4 --execute

step4、再次插入实验:

1、先设置下字符集:

2、再次插入,可以看到插入成功了。

在命令行里面查询也是没有乱码了:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/05/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析
1、问题:mysql 遇到某些中文插入异常 最近有同学反馈了这样一个问题: 上述语句在脚本中 load 入库的时候会 hang 住,web 前端、命令行操作则要么抛出  Incorrect strin
用户1177713
2018/02/24
3.6K0
关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析
MySQL生僻字改造项目排坑大法
中信银行的某个大佬在一个会议中提及中信银行将成为中国第一个在技术上支持生僻字的商业银行。由于历史原因,我们的MySQL部署规范提供的字符集为utf8字符集,需要将数据库的字符集集体转换为utf8mb4。
雨夜v1
2021/07/18
2.3K1
MySQL生僻字改造项目排坑大法
MYSQL 业务上碰到的 SQL 问题整理集合
前言 身为一名前端工程师,对于 SQL了解程度并不是很深刻,盘点一些个人工作遇到的问题,给大家普及下知识,以及记录自己如何解决这些问题的。 导航 SELECT 语句不区分大小写? SELECT IN
前端教程
2018/03/05
1.1K0
MySQL utf8mb4字符集之表情包存储/生僻词存储
针对MySQL数据库业务生产环境中,经常会有存储表情包的场景,比如:用户评论中的表情包数据。那么MySQL该如何存储这些表情数据呢?
Power
2025/02/28
1140
问题分析:什么导致mysql乱码?
之前出现过一些因为mysql编码使用不正确,导致出现页面乱码的bug,比如utf8不支持Emoji表情等等。这里对乱码问题做下分析,沉淀下来避免再次出现
王昂
2019/11/16
2.3K0
问题分析:什么导致mysql乱码?
YashanDB 知识库|GBK 库插入生僻字乱码?别忽视编码转换这一环
在 GBK 编码的 YashanDB 数据库中,尝试将包含生僻字的人名插入到 nvarchar2 字段时,出现了乱码或字符丢失的现象。例如以下操作:
数据库砖家
2025/05/12
650
percona-toolkit大表操作DDL使用 2.1.  数据库字符集修改2.2.  数据库建库、授权操作2.3.  数据库建表、插入数据4.1.  添加表字段【
1. 系统与安装数据库 1 [root@zhang ~]# cat /etc/redhat-release # 也可以使用其他版本 2 CentOS Linux release 7.4.1708 (Core) 3 [root@zhang ~]# yum install -y mariadb mariadb-server # CentOS7的mysql数据库为mariadb 4 ……………… 5 [root@zhang ~]# systemctl enable mariadb.service
踏歌行
2020/10/15
8300
Oracle存储生僻字乱码问题
1、若Oracle数据库字符集为ZHS16GBK,则必须同时满足如下2个条件,才能避免生僻字乱码:
AiDBA宝典
2023/04/27
3.1K0
Oracle存储生僻字乱码问题
pt-online-schema-change在线修改表结构
pt-osc模仿MySQL内部的改表方式进行改表,但整个改表过程是通过对原始表的拷贝来完成的,即在改表过程中原始表不会被锁定,并不影响对该表的读写操作。
Linux运维技术之路
2022/06/07
1.5K0
𬎆 这个字你能看到算我输,看MogDB如何拿捏生僻字
最近在云和恩墨大讲堂的微信群里,有朋友讨论生僻字的存储,其实无论任何数据库,MogDB 还是 Oracle ,在任何数据库中存储生僻字,其实都和一个因素有关:字符集。
数据和云
2021/10/15
2.2K0
pt-osc改表过程中的中文乱码问题
下午使用pt-osc工具对线上表进行变更的时候,发现了一个问题,在对latin1字符集进行变更的时候,变更完毕之后的表的中文注释都变成了'?',无法正常显示了。于是在测试环境上进行了实验。
AsiaYe
2020/08/10
1.6K0
pt-online-schema-change 使用 dsn 方式连接检测从库
当从库实例与主库实例使用不同端口,或者配置了延迟复制从库(不需要检查延迟时间)时,需要用 dsn 方式手工指定需要检测复制延迟的从库信息。
用户1148526
2024/07/25
1570
MogDB 对于生僻字的存储和显示:㼆 㱔 䶮 (王莹)
最近在云和恩墨大讲堂的微信群里,有朋友讨论生僻字的存储,其实无论任何数据库,MogDB 还是 Oracle ,在任何数据库中存储生僻字,其实都和一个因素有关:字符集。
数据和云01
2021/12/06
1K0
MogDB 对于生僻字的存储和显示:㼆 㱔 䶮 (王莹)
Mysql检测工具使用
一、mysqldumpslow工具使用 1.1、修改配置文件开启慢查询 mysql 开启慢查询 systemctl stop mysqld echo -e "# 开启慢查询\nslow_query_log = 1\nslow_query_log_file = /var/lib/mysql/slow-query.log\nlong_query_time = 1\nlog_queries_not_using_indexes = 1" >>/etc/my.cnf # 重启mysql systemctl rest
mikelLam
2022/10/31
1.5K0
MySQL字符集utf8mb4
Unicode是编码字符集,而UTF-8就是字符编码,即Unicode规则字库的一种实现形式。随着互联网的发展,对同一字库集的要求越来越迫切,Unicode标准也就自然而然的出现。它几乎涵盖了各个国家语言可能出现的符号和文字,并将为他们编号。
HLee
2021/07/23
1.6K0
MySQL字符集utf8mb4
pt-osc 遇到一个not null 不带default值的案例
今天执行YearningSQL平台的工单的时候,又遇到一个执行失败的情况。仔细看了下这个提交的DDL有点不太一样。
保持热爱奔赴山海
2025/05/29
360
如何给对象解释为什么不能在 MySQL 中使用 UTF-8 编码
MySQL 是业务后台系统经常用到的结构化数据库。 掌握 MySQL 相关知识是研发人员必备的能力。 与此同时,在面试过程当中,MySQL 的知识点也是经常被当做面试题目,以此来考量候选人的能力。
Java程序猿
2021/06/10
1K0
【MySQL基础】MySQL表操作全面指南:从创建到管理的深度解析
https://blog.csdn.net/2301_80220607/category_12971838.html?spm=1001.2014.3001.5482
GG Bond1
2025/06/10
1040
【MySQL基础】MySQL表操作全面指南:从创建到管理的深度解析
【YashanDB 知识库】GBK 库,生僻字插入 nvarchar2 字段后乱码问题
gbk 生僻字,客户端转换数据为 gbk 编码时,生僻字转换失败,发送给服务端存储的数据缺失,导致显示问题。
用户11441800
2025/02/25
1490
不可忽视的MySQL字符集
墨墨导读:字符集是一组符号和编码。collation是一组用于比较字符集中的字符的规则。
数据和云
2021/03/30
2.2K0
不可忽视的MySQL字符集
推荐阅读
相关推荐
关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档