在 PSQL 上进行基本查询不显示任何内容

Making a basic query on PSQL does not display anything

我已经通过命令行连接到我的 PSQL 数据库,并且可以 运行 命令,例如 \dt 或类似的命令。

然而,当我输入一个基本查询,如 SELECT * FROM myTable 并点击 return 时,它没有显示任何内容,只是转到下一行等待另一个命令。

知道为什么吗?

您需要使用 ;

终止查询

SELECT * FROM myTable;

实际上还有一个不太明显的原因。如果您在查询中的某处省略了右括号 ()),您将获得相同的行为。例如

SELECT *
    FROM some_table
    WHERE (NOW() - date_value;

它不会尝试执行该语句,直到它在吐出语法错误之前获得结束 );。虽然上面的问题很明显,但要发现更复杂的查询会变得更加棘手。要摆脱它,请用多个括号 ))))))))); 结束,它仍然会解决并吐出语法错误,以便您可以继续并更正。

发现这种情况的一种方法是使用向上箭头浏览您的历史记录 - 如果您没有看到您之前输入的(但尚未执行的)语句,那么您知道您仍在在尝试语法检查之前尝试关闭语句的状态。

问题不仅限于括号,还包括任何其他结束符号,例如引号。诀窍是注意 psql 提示,因为它显示了解析状态。例如;

  • DATABASE=> => 表示一切正常,正在解析单行
  • DATABASE-> -> 表示您在换行并且可能缺少 ;
  • DATABASE(> (> 表示您还没有关闭括号
  • DATABASE'> '> 表示您还没有关闭报价。

等等,你懂的。