MySQL生僻字插入失败的处理方法(Incorrect string value)

发布时间 - 2026-01-11 01:06:47    点击率:

最近,业务方反馈有个别用户信息插入失败,报错提示类似"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、再次插入,可以看到插入成功了。

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

到此就完成了,大家可以参考一下。


# MySQL  # 生僻字  # MySQL抛出Incorrect string value异常分析  # MySql 错误Incorrect string value for column  # Mysql中关于Incorrect string value的解决方案  # 可以看到  # 线上  # 是在  # 不支持  # 可以使用  # 报错  # 到此  # 命令行  # 应该是  # 机里  # 完成了  # 失败了  # SET  # CHARACTER  # COMMENT  # DEFAULT  # AUTO_INCREMENT  # NULL  # real_name 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何与Inertia.js和Vue/React构建现代单页应用  PHP正则匹配日期和时间(时间戳转换)的实例代码  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Windows Hello人脸识别突然无法使用  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  如何快速生成高效建站系统源代码?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Linux系统命令中tree命令详解  Python正则表达式进阶教程_复杂匹配与分组替换解析  再谈Python中的字符串与字符编码(推荐)  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  lovemo网页版地址 lovemo官网手机登录  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  北京网站制作的公司有哪些,北京白云观官方网站?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在腾讯云服务器上快速搭建个人网站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Laravel PHP版本要求一览_Laravel各版本环境要求对照  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  大型企业网站制作流程,做网站需要注册公司吗?  php 三元运算符实例详细介绍  深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  简单实现Android文件上传  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  焦点电影公司作品,电影焦点结局是什么?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  利用vue写todolist单页应用  Laravel如何处理文件下载请求?(Response示例)  如何自定义建站之星网站的导航菜单样式?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  javascript日期怎么处理_如何格式化输出  如何快速登录WAP自助建站平台?  如何用花生壳三步快速搭建专属网站?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  三星、SK海力士获美批准:可向中国出口芯片制造设备  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  html5的keygen标签为什么废弃_替代方案说明【解答】  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】