%ignore_a_1%,以前没注意到,在此分享一下:$ mysql -uroot -e ldquo;show global status like lsquo;Uptim
MySQL客户端输出格式化神奇现象,,以前没注意到,在此分享一下:
$ mysql -uroot -e “show global status like ‘Uptime’”
+—————+———+
| Variable_name | Value |
+—————+———+
| Uptime | 2174838 |
+—————+———+
$ mysql -uroot -e “show global status like ‘Uptime’” > /tmp/test
[mysql@dev81 ~]$ cat /tmp/test
Variable_name Value
Uptime 2174855
发现奇怪的地方了吗?格式化的那些符号都不见了!同样的命令,重定向到文件之后,输出变了!
+—————+———+
| Variable_name | Value |
+—————+———+
| Uptime | 2174838 |
+—————+———+
变成了
Variable_name Value
Uptime 2174855
想了很长时间,没想明白。问了下曲山,他二话不说开始用strace,马上就发现了奥妙所在。
$ strace mysql -uroot -e “show global status like ‘Uptime’”
……
……
write(1, “+—————+———+”, 28+—————+———+
) = 28
write(1, “| Variable_name | Value |”, 28| Variable_name | Value |
) = 28
write(1, “+—————+———+”, 28+—————+———+
) = 28
write(1, “| Uptime | 2175430 | ”, 29| Uptime | 2175430 |
) = 29
write(1, “+—————+———+”, 28+—————+———+
) = 28
poll([{fd=3, events=POLLIN|POLLPRI}], 1, 0) = 0
write(3, “″, 5) = 5
shutdown(3, 2 /* send and receive */) = 0
close(3) = 0
exit_group(0) = ?
Process 24577 detached
$ strace mysql -uroot -e “show global status like ‘Uptime’” > /tmp/test
……
……
write(1, “Variable_nameValueUptime21755″…, 35) = 35
exit_group(0) = ?
Process 24581 detached
针对不同的输出渠道,MySQL的客户端似乎有方法可以捕捉到并采取不同的格式化输出策略。不过MySQL为什么要这样做的原因还是不知道,估计只有天知道了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1961103.html