我们有一台带有旧版 php (5.2.9) 和 mysql (5.0.67) 的服务器。这是一个已经运行多年的网站。现在它卡住了。
使用 strace,我看到它卡在选择查询上
从 mysql 运行命令
select * from table \G
工作正常
select * from table;
不会停止运行、运行、运行,直到我按下 Ctrl+C。
我知道这是一个古老的服务器和配置,但这仍然很奇怪,不是吗?
最佳答案
当您使用 ;
终止查询时,结果将格式化在表格中。它必须在打印任何内容之前读取所有结果,因为它必须找到每列的最大宽度,以便它们全部对齐。如果查询返回大量数据,它会在开始打印任何内容之前挂起一段时间。
\G
使其垂直打印每一行,并将各列放在单独的行上。这使得它可以在数据库开始返回结果时立即开始打印。
关于mysql - 奇怪的 mysql select 循环与 ;但不是\G,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77418280/