首页 > 其他分享 >【YashanDB知识库】服务端是GBK编码,导致从22.2.12.100升级到22.2.13.100失败问题

【YashanDB知识库】服务端是GBK编码,导致从22.2.12.100升级到22.2.13.100失败问题

时间:2024-07-26 10:39:24浏览次数:14  
标签:12.100 升级 YashanDB 编码 GBK 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脚本,并比较结果判断是否升级成功。

标签:12.100,升级,YashanDB,编码,GBK,22.2,13.100
From: https://www.cnblogs.com/YashanDB/p/18324826

相关文章

  • 【YashanDB知识库】绑定参数,同一个sql多个执行计划的问题
    问题现象同一个sql有两个执行计划,是否合理?它的EXECUTIONS,ELAPSED_TIME等统计信息怎么看,是独立分开的还是统一计算的?如下图:问题影响版本tpcc测试:23.2.1.100问题的风险及影响影响EXECUTIONS等sql统计信息的计算问题发生原因同一条sql,特别是绑定参数的sql,参数类型不同,会导......
  • Metasploit Pro 4.22.2-2024071901 (Linux, Windows) - 专业渗透测试框架
    MetasploitPro4.22.2-2024071901(Linux,Windows)-专业渗透测试框架Rapid7Penetrationtesting,releaseJul19,2024请访问原文链接:https://sysin.org/blog/metasploit-pro-4/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org世界上最广泛使用的渗透测试框架......
  • 文心一言 VS 讯飞星火 VS chatgpt (310)-- 算法导论22.2 8题
    八、我们将一棵树T=(V,E)......
  • 【YashanDb知识库】YashanDB的JDBC/OCI驱动如何设置字符编码
    问题现象Oracle、Mysql数据库链接串,JDBC驱动连接串可以指定客户端的编码格式:jdbc:mysql://hostname:port/database_name?useUnicode=true&characterEncoding=utf8mb4jdbc:oracle:thin:@//hostname:port/service_name?NLS_LANGUAGE=AMERICAN&NLS_TERRITORY=AMERICA&NLS_CHARACTE......
  • 【YashanDB数据库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIE
    问题现象客户的java日志中有如下异常信息:问题的风险及影响对正常的业务流程无影响,但是影响druid的mergesql功能(此功能会将sql语句中的字面量替换为绑定变量,然后将替换以后的sql视为同一个,然后用做执行性能统计)问题影响的版本与yashandb版本无关问题发生原因druid源码中在......
  • 文心一言 VS 讯飞星火 VS chatgpt (309)-- 算法导论22.2 7题
    七、职业摔跤手可以分为两种类型:“娃娃脸”(“好人”)型和“高跟鞋”(“坏人”)型。在任意一对职业摔跤手之间都有可能存在竞争关系。假定有n个职业摔跤手,并且有一个给出竞争关系的r对摔跤手的链表。请给出一个时间为O(n+r)的算法来判断是否可以将某些摔跤手划分为“......
  • 【YashanDB知识库】stmt未close,导致YAS-00103 no free block in sql main pool part 0
    问题现象问题单:YAS-00103nofreeblockinsqlmainpoolpart0,YAS-00105outofmemorytoallocatehashtableofsize=256现象:业务处理sql时,报错YAS-00103nofreeblockinsqlmainpoolpart0问题风险及影响业务处理报错,影响功能使用问题影响版本客户版本:22.2.4......
  • 【YashanDB知识库】filter or改写问题
    问题现象当filter中出现or的时候,会导致filter无法走索引或者走hashjoin,就需要进行改写,例如:createtabletest_tab1(col1int,col2int,col3int);createtabletest_tab2(col4int,col5int,col6int);beginforiin1..10000loopinsertintotest_tab1values(i......
  • 【YashanDB知识库】yac修改参数后关闭数据库hang住
    【标题】yac修改参数后关闭数据库hang住【问题分类】性能优化【关键词】YashanDB,yac,shutdownhang【问题描述】修改yac参数后执行shutdownimmediate,数据库hang住。【问题原因分析】Shutdown操作时,线程在获取gInstance->trigger->sema信号量时卡住。该信号量应由mai......
  • 【YashanDB知识库】EXP导致主机卡死问题
    问题现象问题单:exp导出全库1主2备主节点执行,DMP文件30G左右系统卡死,发生主备切换现象:expsys/Cod-2022file=bim20240402.dmpfull=y服务器卡死,ssh连接不上服务器。等待一两个小时后,可以重新连接上。备用节点升主正常,查看run.log,心跳发送不到主节点。重连后,yasdb不......