MySQL命令⽆法输⼊中⽂问题的解决⽅式
发现问题
近期通过 mysql 命令连接 mysql server 的时候, 出现了不能输⼊中⽂的现象, 如下所⽰:
mysql> SELECT 'Chinese characters <> are stripped';
+------------------------------------+
| Chinese characters <> are stripped |
+------------------------------------+
| Chinese characters <> are stripped |
+------------------------------------+
1 row in set (0.00 sec)
fetching interface information输⼊的所有中⽂都会被替换为空. 上述测试为官⽅的 mysql-5.7.32 版本.
遍历官⽅ mysql 的发现了 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)
参考, 出现和描述中类似的事情, mysql 命令⾏的交互模式不⽀持所有宽字符的输⼊.
不能输⼊中⽂会出现什么问题?
从测试来看, 该 bug 只影响通过 mysql 命令以交互模式连接 mysql server 的会话操作 . 如果线上有使⽤此 bug 的版本, 操作表的时候可能会出现丢失中⽂的问题.
以下⽅式不受影响:
woofer1. 各程序通过相关驱动连接数据库;
2. mysql 命令以⾮交互模式操作, ⽐如 mysql -h ... -p.... < /tmp/t.sql
哪些版本受影响
该 bug 在 5.7.34 和 8.0.24 中修复, 见 . 从修复的补丁来看, bug 与 libedit 版本没有关系, 不管是 rpm, deb 还是官⽅的 build 版本都受此影响.
从我们的测试来看, 以下版本都会受到影响:
5.7.31 ~ 5.7.33
8.0.21 ~ 8.0.23
备注: 其它发⾏版暂不明确, ⼤概率也会出同样的问题, 不过发⾏版通常⽐官⽅的慢⼀拍, 其低版本可能会提前修复该问题.
如何处理sherry女名寓意
线上的版本的选择可以集中在使⽤过的⼀些版本, ⽐如笔者常⽤的:
- 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如何给公司建立网站
mysql无法连接到服务器
如果线上已经使⽤了上述受影响的版本, 可以采⽤以下⽅式处理:
临时处理
不⽅便升级的话, 可以先使⽤ 5.7.30 以下或 5.7.34 及以上版本的 mysql client 命令;
⼩版本升级
如果⽅便进⾏⼩版本升级, 建议升级到以下版本:
5.7.35
8.0.26
总结什么是匿名类
到此这篇关于MySQL命令⽆法输⼊中⽂问题的⽂章就介绍到这了,更多相关MySQL命令⽆法输⼊中⽂内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。