MySQL命令无法输入中文问题的解决方式


Posted in MySQL onAugust 30, 2021

发现问题

近期通过 mysql 命令连接 mysql server 的时候, 出现了不能输入中文的现象, 如下所示:

mysql> SELECT 'Chinese characters <> are stripped';
+------------------------------------+
| Chinese characters <> are stripped |
+------------------------------------+
| Chinese characters <> are stripped |
+------------------------------------+
1 row in set (0.00 sec)

输入的所有中文都会被替换为空. 上述测试为官方的 mysql-5.7.32 版本.

遍历官方 mysql 的 changelog-5.7.34 发现了 oracle 官方的 mysql-5.7.34 和 mysql-8.0.24 分别修复了以下 bug

For builds compiled using the libedit library, if the mysql client was invoked
with the --default-character-set=utf8 option, libedit rejected input of
multibyte characters. (Bug #32329078, Bug #32583436, Bug #102806)

参考bug-102806 , 出现和描述中类似的事情, mysql 命令行的交互模式不支持所有宽字符的输入.

不能输入中文会出现什么问题?

从测试来看, 该 bug 只影响通过 mysql 命令以交互模式连接 mysql server 的会话操作 . 如果线上有使用此 bug 的版本, 操作表的时候可能会出现丢失中文的问题.

以下方式不受影响:

1. 各程序通过相关驱动连接数据库;
2. mysql 命令以非交互模式操作, 比如 mysql -h ... -p.... < /tmp/t.sql

哪些版本受影响

该 bug 在 5.7.34 和 8.0.24 中修复, 见 github-mysql-patch-117fb2 . 从修复的补丁来看, bug 与 libedit 版本没有关系, 不管是 rpm, deb 还是官方的 build 版本都受此影响.

从我们的测试来看, 以下版本都会受到影响:

5.7.31 ~ 5.7.33
8.0.21 ~ 8.0.23

备注: 其它发行版暂不明确, 大概率也会出同样的问题, 不过发行版通常比官方的慢一拍, 其低版本可能会提前修复该问题.

如何处理

线上的版本的选择可以集中在使用过的一些版本, 比如笔者常用的:

- percona 分支
percona-5.6.45
percona-5.7.28
percona-8.0.22

- 官方版本
mysql-5.6.29
mysql-5.7.28
mysql-8.0.19

如果线上已经使用了上述受影响的版本, 可以采用以下方式处理:

临时处理

不方便升级的话, 可以先使用 5.7.30 以下或 5.7.34 及以上版本的 mysql client 命令;

小版本升级

如果方便进行小版本升级, 建议升级到以下版本:

5.7.35
8.0.26

总结

到此这篇关于MySQL命令无法输入中文问题的文章就介绍到这了,更多相关MySQL命令无法输入中文内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
详解MySQL连接挂死的原因
May 18 MySQL
MySQL 查询速度慢的原因
May 25 MySQL
Unity连接MySQL并读取表格数据的实现代码
Jun 20 MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 MySQL
mysql函数全面总结
Nov 11 MySQL
详解MySql中InnoDB存储引擎中的各种锁
Feb 12 MySQL
mysql 排序失效
May 20 MySQL
详解Mysql数据库平滑扩容解决高并发和大数据量问题
May 25 MySQL
MySQL数据库之存储过程 procedure
Jun 16 MySQL
MySQL生成千万测试数据以及遇到的问题
Aug 05 MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 MySQL
mysql数据库如何转移到oracle
Dec 24 MySQL
mysql 索引合并的使用
Aug 30 #MySQL
MySQL去除重叠时间求时间差和的实现
Aug 23 #MySQL
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
Aug 23 #MySQL
MySQL的全局锁和表级锁的具体使用
Aug 23 #MySQL
MySQL令人大跌眼镜的隐式转换
Aug 23 #MySQL
SQL IDENTITY_INSERT作用案例详解
Aug 23 #MySQL
MySQL非空约束(not null)案例讲解
Aug 23 #MySQL
You might like
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
深入php数据采集的详解
2013/06/02 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
php实现微信企业转账功能
2018/10/02 PHP
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
浅谈python标准库--functools.partial
2019/03/13 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
合作意向书模板
2014/03/31 职场文书
写给领导的感谢信
2015/01/22 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
仙境之桥观后感
2015/06/16 职场文书
养成教育主题班会
2015/08/13 职场文书
新员工入职感言范文!
2019/07/04 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL