本文作者:葉金榮产园,知數(shù)堂聯(lián)合創(chuàng)始人,MySQL DBA課程講師滔驶。Oracle MySQL ACE遇革,MySQL布道師。有多年MySQL及系統(tǒng)架構(gòu)設(shè)計(jì)經(jīng)驗(yàn),擅長MySQL企業(yè)級(jí)應(yīng)用萝快、數(shù)據(jù)庫設(shè)計(jì)比原、優(yōu)化、故障處理等杠巡。
不注意到這個(gè)變化的話量窘,還挺折騰人的。
在MySQL 8.0.19 Release Notes里氢拥,有這么一段話:
When the mysql client operates in interactive mode, the --binary-as-hex option now is enabled by default. In addition, output from the status (or \s) command includes this line when the option is enabled implicitly or explicitly蚌铜。To disable hexadecimal notation, use --skip-binary-as-hex (Bug #24432545)
意思是如果用mysql客戶端進(jìn)入交互模式,那么默認(rèn)啟用參數(shù) --binary-as-hex嫩海,執(zhí)行 status
或 \s
時(shí)能看到下面這樣的標(biāo)記:
[root@yejr.me]> \s
...
Binary data as: Hexadecimal
...
Threads: 1 Questions: 88...
可以在啟動(dòng)客戶端時(shí)加上--skip-binary-as-hex關(guān)閉這個(gè)參數(shù)冬殃。
那么加上參數(shù)--binary-as-hex后,對(duì)交互式客戶端會(huì)有什么影響呢叁怪?
先看下文檔里的解釋:
When this option is given, mysql displays binary data using hexadecimal notation (0xvalue).
也就是說审葬,當(dāng)查詢到的數(shù)據(jù)有二進(jìn)制數(shù)據(jù)的話,就會(huì)用十六進(jìn)制方式展示出來奕谭。
看看下面的例子吧:(建議在PC端或橫版觀看)
# 在 --skip-binary-as-hex 模式下
# 用CHAR()函數(shù)能把二進(jìn)制轉(zhuǎn)成ASCII字符
[root@yejr.me]> SELECT CHAR(77,121,83,81,'76');
+-------------------------+
| CHAR(77,121,83,81,'76') |
+-------------------------+
| MySQL |
+-------------------------+
# 在 --binary-as-hex(8.0.19后默認(rèn)) 模式下
# 直接把二進(jìn)制數(shù)據(jù)以十六進(jìn)制輸出了
...
Server characterset: utf8mb4
...
UNIX socket: /mysql/data01/mysql.sock
Binary data as: Hexadecimal
[root@yejr.me]> SELECT CHAR(77,121,83,81,'76');
+--------------------------------------------------+
| CHAR(77,121,83,81,'76') |
+--------------------------------------------------+
| 0x4D7953514C |
+--------------------------------------------------+
看起來是不是覺得怪怪的涣觉,很不適應(yīng)。
新參數(shù)--binary-as-hex是MySQL 5.6.37版本開始引入的血柳,由一位叫做Dani?l van Eeden的哥們建議加入的官册。個(gè)人不是太理解這位仁兄的腦回路,可能覺得對(duì)于二進(jìn)制數(shù)據(jù)难捌,MySQL本來就不該給智能化地轉(zhuǎn)成ASCII膝宁,而應(yīng)該以碼農(nóng)們習(xí)慣的十六進(jìn)制展示,所以能讓屏幕輸出看起來更酷一些根吁?哈哈哈...
延伸閱讀
Print binary data as hex in the mysql client #118, https://github.com/mysql/mysql-server/pull/118
Print binary data as hex in the mysql client (contribution), https://bugs.mysql.com/bug.php?id=84391