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

far*_*jam 2 database postgresql command-line relational-database psql

我已经在命令行上连接到我的PSQL数据库,并且可以正常运行类似\dt或类似的命令。

但是,当我键入基本查询(例如SELECT * FROM myTable,点击回车)时,它不显示任何内容,而仅转到下一行等待另一个命令。

知道为什么吗?

Dis*_*nky 7

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

SELECT *
    FROM some_table
    WHERE (NOW() - date_value;
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • DATABASE=>=>意味着一切正常并且正在解析一行
  • DATABASE->->意味着您处于新线路并且可能错过了;
  • DATABASE(>(>意味着你还没有关闭括号
  • DATABASE'>'>意味着您还没有关闭报价。

等等,你明白了。


evs*_*ino 5

您需要使用终止查询 ;

SELECT * FROM myTable;