最近,业务方反馈有个别用户信息插入失败,报错提示类似"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、先模拟线上环境,设置下字符集:

我们尝试插入王(在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)相关推荐

  1. mysql不识别生僻字_MySQL生僻字插入失败怎么办

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

  2. mysql不识别生僻字_MySQL生僻字插入失败怎样办

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  3. mysql不识别生僻字_MySQL生僻字插入失败的处理方法

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

  4. mysql触发器 生僻字_mysql 生僻字亂碼

    發一下牢騷和主題無關: Incorrect string value: '\xF0\xA1\xBF\xA8\xE9\x82...' for column 'last_name' 這個問題出在mysql ...

  5. mysql触发器应用场景_MySQL触发器的使用场景及方法实例

    触发器: 触发器的使用场景以及相应版本: 触发器可以使用的MySQL版本: 版本:MySQL5以上 使用场景例子: 每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写 ...

  6. mysql触发器如果提示_mysql 触发器

    1   引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

  7. mysql触发器 while循环_mysql触发器跳出当前循环方法

    mysql触发器跳出当前循环方法 set @num=@UnitLength/3; label: while i set @length=(select SUBSTRING(@unit_sid_fk,1 ...

  8. mysql触发器新元组_MySQL触发器-条件触发器语法

    文章为作者原创,未经许可,禁止转载.    -Sun Yat-sen University 冯兴伟 实验4触发器 (1)实验目的 掌握数据库触发器的设计和使用方法 (2)实验内容和要求 定义BEFOR ...

  9. mysql 触发器 注意事项_MySQL触发器的利弊-使用MySQL触发器时应该注意的事项

    在MySQL中,触发器可以在你执行INSERT.UPDATE或DELETE的时候,执行一些特定的操作.在创建触发器时,可以指定是在执行SQL语句之前或是之后执行这些操作.通过触发器,你可以实现一些业务 ...

最新文章

  1. python高阶函数
  2. boost::posix_time和boost::date_time杂项的测试程序
  3. C++ number of positive divisors计算正除数的实现算法(附完整源码)
  4. spring react_使用Spring Cloud Gateway保护React式微服务
  5. VS2010创建ATL工程及使用C++测试COM组件
  6. 面向对象的写法,见到就添,持续更新。。。
  7. python语言的语法_PYTHON语言常用语法摘要
  8. Swift 2.0 自定义cell和不同风格的cell
  9. mysql 事务 实现_什么是mysql的事务和实现
  10. 无纸化会议桌的应用及说明
  11. MySQL从入门到放弃(三)
  12. laravel+redis通过api简单实现微博登陆注册关注取消关注发布信息等
  13. 社群发现算法--强连通和连通在关联图谱中的应用
  14. python读取stl文件三维坐标_python vtk 读取三维raw数据存为stl
  15. ksoftirqd内核线程
  16. 2022杭电多校赛第八场
  17. 2015年十大最具有影响力的免费网站推广方式
  18. postgresql 遍历参数_《go语言从入门到入坟》json操作、文件操作
  19. Python处理excel-根据全称自动填写简称
  20. HTML语义化标签一(header、nav、section、article)

热门文章

  1. CSS一个冒号是伪类:用于监控动作、两个冒号是伪元素::用于定位元素
  2. yum安装php5.6 nginx,CentOS 7 yum安装 Nginx1.16 + MySQL5.5 PHP5.6
  3. android weex跳转闪退,关于weex页面在android端跳转的问题
  4. linux+date+命令+作业,Linux date命令的使用
  5. swiper用loop不出图片_swiper实现双向控制
  6. js调用浏览器的下载框
  7. springboot做网站_Github 上 Star 最多的个人 Spring Boot 开源学习项目
  8. shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现
  9. highcharts一天时间 与一周时间_一天当中什么时间减肥降重最好的
  10. 【若依(ruoyi)】启动时,卡死在:Using existing EHCache named [loginRecordCache]