MySQL命令无法输入中文问题的解决方式
作者:arstercz 发布时间:2024-01-15 19:29:54
发现问题
近期通过 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
总结
来源:https://blog.arstercz.com/mysql-can-not-input-chinese/
猜你喜欢
- Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的
- 正在看的ORACLE教程是:常见数据库系统比较 Oracle数据库。提起数据库,第一个想到的公司,一般都会是Oracle。该公司
- 本文实例为大家分享了python实现名片管理系统的具体代码,供大家参考,具体内容如下名片管理系统前提:实现名片管理系统,首先要创建两个pyt
- python opencv把一张图片嵌入(叠加)到另一张图片上1、背景:最近做了个烟火生成系统的界面设计,需要将烟雾图片嵌入到任意一张图片中
- 前言对MySQL表的基本查询还远远达不到实际开发过程中的需求,因此还需要掌握对数据库表的复合查询。本文介绍了多表查询、子查询、自连接、内外连
- 折腾了一天的时间,才弄出点眉目来。 做AJAX应用或Flash应用,提交中文内容到后台,涉及到编码解码(encode、decode)及编码格
- javascript 常见汉字转换成拼音,上下行排列,方便对比,速度快,你可以把代码复制到本地,作为一个不错的汉字转换拼音的工具!转换效果图
- 哦,这就是真正牛X的程序员。不过,他也仅仅是牛X罢了,还不是大神。大神程序员是什么样儿呢?他是扫地僧,大隐隐于市。先搞清楚这些名词再说别的:
- 1、页签的表达。页签表达很清晰,当前页签突出,且层级包涵关系明确;看下图,一目了然的感觉,不用疑惑我在那部分里。不信?拿当当的对比一下,你感
- 前言本文主要给大家介绍了关于WebSocket部署服务器外网无法连接的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍
- 在跨业务、跨网站发送数据或者业务升级的时候,我们有的时候需要指定发送数据的编码方式,比如页面是utf-8编码的,而发送出去的数据却是GB23
- 前言以下是我对python中编写脚本最重要的库之一pyautogui的学习整理,分享给大家希望有所帮助提示:我在初步使用pyautogui的
- 想要爬取指定网页中的图片主要需要以下三个步骤:(1)指定网站链接,抓取该网站的源代码(如果使用google浏览器就是按下鼠标右键 ->
- 前言在mysql中slow query log是一个非常重要的功能,我们可以开启mysql的slow query log功能,这样就可以分析
- 前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。以下文章来源于Python进击者 ,
- 使用eslint和editorconfig方式使用eslint的好处1、避免运行时因格式问题报错2、方便团队合作,代码风格统一安装eslin
- 一、OS包的作用os包中的API主要可以帮助我们使用操作系统中的文件系统、权限系统、环境变量、系统进程,以及系统信号。对于类Unix的操作系
- 今天的第二个作品,哈哈哈哈,搞起来感觉还挺有意思的,不过代码里纸牌J,Q,K,A几个数字被我替换成了11,12,13,14......主要是
- 这周心血来潮,翻看了现在比较流行的几个JS脚本框架的底层代码,虽然是走马观花,但也受益良多,感叹先人们的伟大……感叹是为了缓解严肃的气氛并引
- 目录CMD命令获取电脑里配置过的wifi信息用python脚本来实现这一操作,并获取所有配置过的wifi密码CMD命令获取电脑里配置过的wi