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学习总结-基础架构概述
Apr 05 MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 MySQL
Mysql官方性能测试工具mysqlslap的使用简介
May 21 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
MySQL 常见的数据表设计误区汇总
Jun 07 MySQL
MySQL七种JOIN类型小结
Oct 24 MySQL
SQL 聚合、分组和排序
Nov 11 MySQL
如何避免mysql启动时错误及sock文件作用分析
Jan 22 MySQL
mysql查询结果实现多列拼接查询
Apr 03 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
Apr 26 MySQL
MySQL 数据 data 基本操作
May 04 MySQL
MySQL索引失效场景及解决方案
Jul 23 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代码优化的53个细节
2014/03/03 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
php可变长参数处理函数详解
2017/02/22 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
Python中关于使用模块的基础知识
2015/05/24 Python
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
Django url 路由匹配过程详解
2021/01/22 Python
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
应届护士求职信范文
2014/01/26 职场文书
《在家里》教后反思
2014/03/01 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
党员转正介绍人意见
2015/06/03 职场文书
横空出世观后感
2015/06/09 职场文书
会议室使用管理制度
2015/08/06 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL