Illegal mix of collations for operation 'UNION'

【 TiDB 使用环境】测试
【 TiDB 版本】v6.2.0
【问题现象】执行如下sql报错:1271 - Illegal mix of collations for operation ‘UNION’
select distinct a.ti_jgywlb check_value from tcsjsjg a
union all
select ‘TGZX’ check_value from dual
【配置信息】
1.数据库服务器字符集export LANG=“zh_CN.gbk”
2.创建数据库字符集CREATE DATABASE fm CHARACTER SET gbk COLLATE gbk_bin;
3.建表字符集
create table tcsjsjg
(

) default charset=gbk collate gbk_bin;

这个问题还有可能是什么原因?

SELECT DISTINCT a.ti_jgywlb check_value FROM tcsjsjg a
UNION ALL
SELECT ‘TGZX’ check_value COLLATE gbk_bin FROM dual
先试一下

蹲个答案

看看执行计划

他这个是字符集不匹配,在执行计划上应该体现不了

有没有看一下dual的字符集和排序字符集;
或者第二句直接用SELECT ‘TGZX’ check_value
查看涉及UNION的每个SELECT查询中对应列的collation,并确保它们是相同的。

正解,select指定字符集