set names 问题请教

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】

【概述】 场景 + 问题概述

【背景】 做过哪些操作

【现象】 业务和数据库现象

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】
4.0.12
【应用软件及版本】

【附件】 相关日志及配置信息

  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息

监控(https://metricstool.pingcap.com/)

  • TiDB-Overview Grafana监控
  • TiDB Grafana 监控
  • TiKV Grafana 监控
  • PD Grafana 监控
  • 对应模块日志(包含问题前后 1 小时日志)

使用这条指令set names binary,可以将下面三个设置为binary,大小不敏感

1、我们这里理解的这个的意义是是客户端、连接处理以及结果返回都变为大小写不敏感是吧?
2、我使用set character_set_client = “binary”;的方式将上述3个设置为binary,show查看,对应的编码也变为了binary,但是执行大小写不敏感语句时,会有问题,而set names binary则不会报错,这两种设置方式的区别是?
3、可以进行全局设置嘛?我全局设置,查看变量还是utf-8


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

2赞

设定完了以后,需要关闭这个Session 链接,重开一个Session 连上,在看看效果

1赞

看过了,不太行。。还是utf8的形式

1赞

参考下这个:

https://docs.pingcap.com/zh/tidb/stable/character-set-and-collation

1赞

嗯,这个看过了,在部署时将大小写不敏感参数设置为true了。。

1赞

问题解决了吗?

1赞

set names binary;后是可以执行语句的,我想了解一下:
1、我使用set character_set_client = “binary”;的方式将上述3个设置为binary,show查看,对应的编码也变为了binary,但是执行大小写不敏感语句时,会有问题,而set names binary则不会报错,这两种设置方式的区别是?
2、可以进行全局设置嘛?我全局设置,退出查看变量还是utf-8
:joy::pray:

1赞

@xfworld

1赞

大小写敏感 ,要用这个:

utf8mb4_bin 

1赞

额,好的,。。我这里现在想要大小写不敏感。。也再部署的时候,配置了参数为true的。。
想了解一下:
1、我使用set character_set_client = “binary”;的方式将上述3个设置为binary,show查看,对应的编码也变为了binary,但是执行大小写不敏感语句时,会有问题,而set names binary则不会报错,这两种设置方式的区别是?
2、可以进行全局设置嘛?我全局设置,退出查看变量还是utf-8,这个是不可以全局设置是吧?

1赞

具体问题是什么 ? 创建新集群大小写敏感生效,如果创建完成在线修改是不生效的。

同上建议,

具体问题是一张表,执行case when语句,会报错,找不到columns:如:ERROR 1105 (HY000): Can’t find column Column#5 in schema Column: [data_test.t2.a] Unique key: []
部署时,开始了大小写不敏感参数,创建的表时,设置的大小写不敏感的
set names和单独set cjaracter_set_client的区别是?

https://docs.pingcap.com/zh/tidb/v5.0/sql-statement-set-names#set-namescharacter-set

应该是一样的哈

哦,好的,这个就有点尴尬了,
set names可以跑:
image
使用set character_set_client = “binary”;
这个有问题:


这个好像不太一样。。。:sweat_smile:

Hi~ 帮忙确认一下是否这个 bug 导致的。 https://github.com/pingcap/tidb/issues/26662

应该是这个。
我主要是想知道:
1、set names和单独设置3次设置如:set character_set_client = “binary”;的区别是什么的,按道理来说set character_set_client = “binary”;这个将3个参数设置为binary,看设置后的字符集结果,是一样的,但是执行就报错,这个是为什么呢?set names和set character_set_client的区别是?
2、全局设置也不生效,这个是没法全局设置是嘛?

理论上应该是一样的, 如果遇到非预期的问题,可以整理一下复现步骤,放到 产品缺陷 专区,会有同学跟进这部分情况。

好的,谢谢:ok_hand: