首页 > 数据库 >Oracle-TiDB迁移-生僻字乱码问题

Oracle-TiDB迁移-生僻字乱码问题

时间:2023-08-23 12:37:19浏览次数:41  
标签:set 生僻字 utf8mb4 导出 转码 character 乱码 16 TiDB

作者: longzhuquan



背景

某去O场景业务上线测试,再执行某张表缩字段时报错。



现象



执行缩字段语句

ALTER TABLE schemaname.tablename  MODIFY COLUMN licenseno varchar(50)  CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '发动机号' ;



报错信息

"incorrect string value '\xED' for column ‘licenseno’"



数据库版本

Oracle-TiDB迁移-生僻字乱码问题_16进制



推测原因

TiDB报错"incorrect string value '\xED' for column ‘licenseno’",一般来说此类报错出现在插入语句阶段,用户在插入与字符集集不匹配的非法字符时报错。而题主本次进行进行的缩字段语句,其原理操作步骤大致分为:将相关表数据由 KV 全部 LOAD 到 TIDB 内存中,在内存中进行修改数据,将修改完的数据进行合规性校验,检验完成后回填到 KV 中。

所以推测是在数据回填进行合法性校验时出现了错误。

查看数据库字符集

character_set_client        utf8mb4
character_set_connection        utf8mb4
character_set_database        utf8mb4
character_set_filesystem        binary
character_set_results        
character_set_server        utf8mb4
character_set_system        utf8
character_sets_dir        /usr/local/mysql-5.6.25-osx10.8-x86_64/share/charsets/

查询原表中是否含有非法字符

select _tidb_rowid, convert(a using utf8mb4) from table where convert(a using utf8mb4) != a;

经过排查发现 “licenseno” 是一个车牌号,其字段类型为 “varchar(200)”,而表中确实存在非法字符,其中此字段的值为 “

标签:set,生僻字,utf8mb4,导出,转码,character,乱码,16,TiDB
From: https://blog.51cto.com/u_15550868/7201165

相关文章

  • TiDB 源码编译之 TiFlash 篇
    作者:ShawnYan导言TiFlash从去年四月一日开源至今已经过去将近一年半,这段时间里TiFlash从v6.0.0-DMR升级到了v7.3.0-DMR,并增加了若干新特性,比如支持MPP实现窗口函数框架,新增支持若干算子和函数下推,支持AWSS3算存分离等。先来回顾一下TiFlash资源精华帖,【重磅消息】......
  • 基于 Vercel & TiDB Serverless 的 chatbot
    作者:shiyuhang0#前言TiDBServerless去年就有和Vercel的集成了,同时还有一个bookstoretemplate方便大家体验。但个人感觉bookstore不够炫酷,借2023TiDBhackthon的机会,我搞了个maskchatbot,你可以在maskchatbot上选定角色,基于此生成prompt来更好的使用ChatGPT......
  • 我和 TiDB 的故事 | 远近高低各不同
    作者:ShawnYanHi,TiDB,Again!书接上回,《我和TiDB的故事|横看成岭侧成峰》,一年时光如白驹过隙,这一年我好似在TiDB上投入的时间总量不是很多,但是断断续续也一直有在关注使用。当然,数据是造不了假的,看热力图就知道我一直都在,只是每逢周末就忘记登录,所以直到现在也还没达到......
  • TiDB 多集群告警监控-中章-融合多集群 Grafana
    作者:longzhuquan背景随着公司XC改造步伐的前进,越来越多的业务选择TiDB,由于各个业务之间需要物理隔离,避免不了的TiDB集群数量越来越多。虽然每套TiDB集群均有两个详细的监控Dashboard、Grafana,但对于运维来说几十套集群的监控、告警、巡检均需消耗巨大的精力。上篇介绍了......
  • java字符串乱码判断
    publicstaticbooleanerrCodes(Stringstr){return!(java.nio.charset.Charset.forName("GBK").newEncoder().canEncode(str));}//扩展判断是否为中文publicstaticbooleancheckChinese(charch){returnString.valueOf(ch).match......
  • SpringMVC 中中文乱码解决
    请求中文乱码在web.xml中配置spring自带的过滤器org.springframework.web.filter.CharacterEncodingFilter,只可以解决请求<!--spring自带的解决中文乱码的filter--><filter><filter-name>encoding</filter-name><filter-class>org.springframework.web.fil......
  • Java Web中出现的一些乱码问题总结(详解)
    三、JavaWeb中出现的一些乱码问题总结(详解) 一、response.getWriter().write()和response.getWriter().print()的区别response.getWriter()返回的是PrintWriter,这是一个打印输出流response.getWriter().write()和response.getWriter().print()是响应给客户端的东西,如果不用......
  • tidb快照备份并发送企业微信机器人通知
    tidb备份使用的是br进行快照备份+日志备份具体代码如下#qiyewx.pyimportjsonfromdatetimeimportdatetimeimportrequestsfromconfigimport*#可以把机器人的配置信息写到一个单独的config里面也可以直接填到脚本里classQiyewx():def__init__(self):......
  • ElementUI图标icon乱码问题
    如题:ELementUI图标icon乱码问题原因:在build编译时编译器处理导致的解决方案方案一:将saas更换为node-saas,安装不了问题可查看这里方案二:升级saas和sass-loader方案三:将element引入的样式代码注释,然后再main.js添加一行引入样式代码注释代码:import'~element-ui/packages/t......
  • 解决pytest html报告中文乱码的问题
    pytest-html指定版本3.1.1即可解决pipinstallpytest-html==3.1.1    ......