【YashanDB知识库】服务端是GBK编码,导致从22.2.12.100升级到22.2.13.100失败问题
问题现象
问题单:22.2.12.100升级到22.2.13.100失败
现象:如下图,从22.2.12.100升级到22.2.13.100失败,报错。

问题风险及影响
版本升级失败,影响上线
问题发生版本
客户版本:22.2.12.100
现在版本已经修改掉这个问题,升级比较时忽略掉"----"开头的分隔符和结果前后的空格。
问题发生原因
表现原因:执行升级脚本,/home/yashan2/yasdb_home/yashandb/22.2.13.100/upgrade_tmp/admin/upgrade/22.2.12/preupgrade.sql后,结果和preupgrade.out匹配失败,导致升级失败。
根因:服务端是gbk、客户端是utf-8编码。yasql对于gbk和utf打印格式不同,导致结果匹配失败
解决方式及规避方法
规避方法:
原生客户端和升级客户端编码格式都设置为GBK编码
1、vi 22.2.12.100/client/yasc_env.ini
CHARACTER_SET=GBK
2、vi 22.2.13.100/client/yasc_env.ini
CHARACTER_SET=GBK
3、./bin/yasboot cluster upgrade -c yashandb --package /home/yashan2/tmp_upgrade/yashandb-22.2.13.100-linux-x86_64.tar.gz
可以正常升级成功。
解决方式:提问题单修改
问题分析和处理过程
问题分析:
查看yasagent.log,发现是执行脚本后,报错。

对比preupgrade.out结果文件,发现是"----------"长度对比不上,导致的问题

代码分析:
asqlPrintColumnTitles打印列头信息,根据columns[i].colWidth长度来做
columnDesc->colWidth = (CodInt16)MIN(columnDesc->bindSize, ASQL_MAX_DISPLAY_WIDTH);
bindsize = column->size*maxRatio + 1
maxRatio 默认为1;当客户端和服务端编码不一致时,maxRatio = clientMaxWidth > serverMinWidth ? (clientMaxWidth - 1) / serverMinWidth + 1 : 1;
确认根因为编码不同导致的问题,然后定下规避方案
经验总结
yashandb版本升级流程中,会调用preupgrade.sql、postupgrade.sql脚本,并比较结果判断是否升级成功。
【YashanDB知识库】服务端是GBK编码,导致从22.2.12.100升级到22.2.13.100失败问题的更多相关文章
- 从服务端架构设计角度,深入理解大型APP架构升级
随着智能设备普及和移动互联网发展,移动端应用逐渐成为用户新入口,重要性越来越突出.但企业一般是先有PC端应用,再推APP,APP 1.0版的功能大多从现有PC应用平移过来,没有针对移动自身特点考虑AP ...
- 【传输协议】发送https请求,由于客户端jdk版本过高,服务端版本低。导致异常:javax.net.ssl.SSLHandshakeException: Server chose SSLv3, but that protocol version is not enabled or not supported by the client.
本地环境jdk为1.8,服务器使用jdk版本未知.但发送https请求,抛出如下异常,解决方案. 一:发送异常内容如下 javax.net.ssl.SSLHandshakeException: Ser ...
- web应用中浏览器与服务端的编码和解码
转自:http://blog.sina.com.cn/s/blog_87cb63e50102w2b6.html 以下为正文: ************************************* ...
- Oracle中文字符乱码?设置Oracle客户端字符编码与服务端一致
经常可能出现查询Oracle数据时,中文显示乱码,这很可能是因为,Oracle服务端的字符编码与客户端不一致引起的. 这时,我们需要做的是,如何设置自己的客户端字符编码与服务端一致. 查询Oracle ...
- 动手实现一个较为简单的MQTT服务端和客户端
项目地址:https://github.com/hnlyf168/DotNet.Framework 昨天晚上大致测试了下 ,490个客户端(一个收一个发) 平均估计每个每秒60个包 使用mqtt协 ...
- GBK 编码
GBK编码范围:8140-FEFE,汉字编码范围见第二节:码位分配及顺序. GBK编码,是对GB2312编码的扩展,因此完全兼容GB2312-80标准.GBK编码依然采用双字节编码方案,其编码范围:8 ...
- gbk编码
GBK 编码 GBK编码范围:8140-FEFE,汉字编码范围见第二节:码位分配及顺序. GBK编码,是对GB2312编码的扩展,因此完全兼容GB2312-80标准.GBK编码依然采用双字节编码方 ...
- java的客户端可以连接CPlus的服务端
今天做的实验,用c++做的服务端,端口号为6000:用java做的客户端,IP为127.0.0.1,port为6000,结果双方可以连接上线: 贴代码: 服务端: #include <winso ...
- servelt乱码问题(tomcat服务端编码为ISO-8859-1)
Post的编码决定机制: <meta http-equiv="Content-Type" content="text/html; charset=gb2312&qu ...
- 少部分手机浏览器对于COOKIE支持不够导致服务端无法读取session的解决方案
相信大家都遇到过这样的问题,有手机浏览器的问题导致服务端SESSION读取不正常,目前在项目中的解决方法是采取H5手机本地存储唯一KEY解决的 代码片段 //定义json格式字符串 var userD ...
随机推荐
- SpringBoot 整合模板引擎 jetbrick-template
添加依赖 <dependency> <groupId>com.github.subchen</groupId> <artifactId>jetbrick ...
- Spring PropertySource,获取指定application.properties文件
@PropertySource注解的使用 @PropeertySource,指定加载配置文件 配置文件映射到实体类 使用@Value映射到具体的java属性 CustomConfig.java pac ...
- Eureka 客户端依赖管理模块
<dependencies> <!--Eureka客户端依赖--> <dependency> <groupId>org.springframework. ...
- 安装phpgjx工具
直接按照phpgjx配置文件进行安装. 重启mysql和访问phpgjx都会生成配置的日志文件 按照文档安装可能日志文件中不会产生SQL记录 解决方案: 可以进入mysql后,查看该日志是否开启 / ...
- 经典面试题函数柯里化: add(1)(2)(3) = 6
function currying() { const args = Array.prototype.slice.call(arguments); const inner = function () ...
- Django集成的密码找回功能
要实现忘记密码功能,您需要进行以下修改: 添加忘记密码链接到登录页面. 创建密码丢失修改页面. 创建密码修改页面. 编写相应的视图函数来处理密码丢失修改和密码修改逻辑. 编写发送验证信息到邮箱的逻辑. ...
- [oeasy]python0074_修改字体背景颜色_background_color_背景色
修改背景色 回忆上次内容 上次将asciiart和颜色一起来玩 7 种基本色 变化多端 不过到目前为止 改的 都是前景色 背景色可以修改吗? 重温参数 具体动手试试 print("\033[ ...
- [oeasy]教您玩转python - 0003 - 编写 py 文件
编写 py 文件 回忆上次内容 次在解释器里玩耍 了解到字符串就是给一堆字符两边加引号 可以是单引号 也可以是双引号 这样游乐场就知道 这个不是一个名字 而是一个字符串 字符串可以用print函数 ...
- hbuilderx+香蕉云编生成ios证书和上架教程
现在很多公司都使用uniapp作为底层框架来开发app应用,而uniapp的开发工具hbuilderx云打包的时候,需要证书和证书profile文件. 假如是ios应用,则还需要上架到appstore ...
- Linux下搭建Elasticsearch7.6.2集群
使用VMvare创建虚拟机 我的创建的三台分别是: 192.168.115.129 node-1 192.168.115.130 node-2 192.168.115.131 node-3 注意:克隆 ...