>  기사  >  데이터 베이스  >  MySQL客户端输出格式化神奇现象

MySQL客户端输出格式化神奇现象

WBOY
WBOY원래의
2016-06-07 16:55:181041검색

MySQL客户端输出格式化神奇现象,以前没注意到,在此分享一下:$ 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, “+—————+———+\n”, 28+—————+———+
) = 28
write(1, “| Variable_name | Value |\n”, 28| Variable_name | Value |
) = 28
write(1, “+—————+———+\n”, 28+—————+———+
) = 28
write(1, “| Uptime | 2175430 | \n”, 29| Uptime | 2175430 |
) = 29
write(1, “+—————+———+\n”, 28+—————+———+
) = 28
poll([{fd=3, events=POLLIN|POLLPRI}], 1, 0) = 0
write(3, “\1\0\0\0\1″, 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_name\tValue\nUptime\t21755″…, 35) = 35
exit_group(0) = ?
Process 24581 detached

针对不同的输出渠道,MySQL的客户端似乎有方法可以捕捉到并采取不同的格式化输出策略。不过MySQL为什么要这样做的原因还是不知道,估计只有天知道了。

linux

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.