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的Seconds_Behind_Master
May 18 MySQL
探究Mysql模糊查询是否区分大小写
Jun 11 MySQL
Unity连接MySQL并读取表格数据的实现代码
Jun 20 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
MySQL一些常用高级SQL语句
Jul 03 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
MySQL中order by的使用详情
Nov 17 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
浅谈redis的过期时间设置和过期删除机制
Mar 18 MySQL
Windows下载并安装MySQL8.0.x 版本的完整教程
Apr 10 MySQL
详解Mysql数据库平滑扩容解决高并发和大数据量问题
May 25 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
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
python自动格式化json文件的方法
2015/03/11 Python
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
基于Pytorch SSD模型分析
2020/02/18 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
会计自我鉴定范文
2013/10/06 职场文书
信息工作经验交流材料
2014/05/28 职场文书
五心教育心得体会
2014/09/04 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
2015年双拥工作总结
2015/04/08 职场文书
企业员工辞职信范文
2015/05/12 职场文书