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 相关文章推荐
left join、inner join、right join的区别
Apr 05 MySQL
mysql多表查询-笔记七
Apr 05 MySQL
浅谈mysql执行过程以及顺序
May 12 MySQL
MySQL 全文索引使用指南
May 25 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
mysql left join快速转inner join的过程
Jun 30 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
Dec 06 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
手把手带你彻底卸载MySQL数据库
Jun 14 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 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数字转汉字代码(算法)
2011/10/08 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
js 日期转换成中文格式的函数
2009/07/07 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
[56:17]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
python小程序实现刷票功能详解
2019/07/17 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
用 Python 制作地球仪的方法
2020/04/24 Python
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
大客户销售经理职责
2013/12/04 职场文书
如何写你的创业计划书
2014/01/07 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
授权委托书格式范文
2014/08/02 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
给校长的一封检讨书
2014/09/20 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
检察院起诉意见书
2015/05/20 职场文书
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers