联合查询,中文乱码

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:
测试环境下,原来tidb版本是V2.1.0 docker部署
现在tidb版本是V3.0.0 docker容器部署

部署过程,将原来数据备份后,然后倒入到新tidb中
问题:
现在发现有一个联合查询出来的数据(中文)是乱码,单独查这张表是正常显示;sql如下


查询结果如下:
%E5%9B%BE%E7%89%87

show variables like “%char%”; 结果如下:


sql中的表 CHARSET=utf8mb4 COLLATE=utf8mb4_bin 都一样

请给一个排除的方向,谢谢!

  1. 请首先排除客户端工具的干扰,在服务器端使用命令行工具查看此信息是否同样是乱码?
  2. 查看当前数据行存放的内容是否本身就是乱码?
  3. 如何导入导出的,在导入导出过程中是否有什么特殊操作?具体命令是什么

1.已经排除客户端和服务查询结果不一样的问题(查询结果都出现乱码)
2.数据存放没问题,在表里的数据是正常的。
3.通过mydumper备份,然后通过 loader -c config.toml 恢复

刚刚同事将查询sql语句 从右关联改成左关联后,就能正常查出数据了。
%E5%9B%BE%E7%89%87

您好: 是否能将使用到的建表语句包含索引, 给2条测试insert语句, 及查询语句发送下,我在测试环境验证一下,多谢。

稍等,我要一下

不好意思,我们通过insert插入部分数据(200条,docker环境)无法复现乱码问题,同时也因为数据中带有业务数据,而且涉及到的关联表中的数据是超过了 400W条,实在不方便脱敏,不能呢提供给你验证。

同时在我们的其他测试环境中有一套Ansible部署的 V3.0.5版本中通过loader 恢复后右关联查询出来数据显示正常。 使用docker部署的环境中使用loader 恢复和Navicat 数据同步都出现了乱码问题。

docker 环境tidb版本如下:

Release Version: v4.0.0-alpha-838-gb84c5a73a

Git Commit Hash: b84c5a73ad139970bec9503ee84f86cf3cb1db1c

Git Branch: master

UTC Build Time: 2019-11-12 09:50:11

GoVersion: go version go1.13 linux/amd64

Race Enabled: false

TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306

Check Table Before Drop: false

而且 docker环境使用的镜像是昨天晚上新下载的 docker pull pingcap/tidb:latest

docker pull pingcap/tikv:latest

docker pull pingcap/pd:latest

您好: 由于不建议在docker下部署,并且问题也没有复现。 您也不方便提供语句。 还是建议使用ansible部署,多谢。

恩,由于固态硬盘的限制,我们以后考虑Ansible部署

:+1::+1::+1:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。