在 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'>
'>
表示您还没有关闭报价。
等等,你懂的。
我已经通过命令行连接到我的 PSQL 数据库,并且可以 运行 命令,例如 \dt
或类似的命令。
然而,当我输入一个基本查询,如 SELECT * FROM myTable
并点击 return 时,它没有显示任何内容,只是转到下一行等待另一个命令。
知道为什么吗?
您需要使用 ;
SELECT * FROM myTable;
实际上还有一个不太明显的原因。如果您在查询中的某处省略了右括号 ()
),您将获得相同的行为。例如
SELECT *
FROM some_table
WHERE (NOW() - date_value;
它不会尝试执行该语句,直到它在吐出语法错误之前获得结束 );
。虽然上面的问题很明显,但要发现更复杂的查询会变得更加棘手。要摆脱它,请用多个括号 )))))))));
结束,它仍然会解决并吐出语法错误,以便您可以继续并更正。
发现这种情况的一种方法是使用向上箭头浏览您的历史记录 - 如果您没有看到您之前输入的(但尚未执行的)语句,那么您知道您仍在在尝试语法检查之前尝试关闭语句的状态。
问题不仅限于括号,还包括任何其他结束符号,例如引号。诀窍是注意 psql
提示,因为它显示了解析状态。例如;
DATABASE=>
=>
表示一切正常,正在解析单行DATABASE->
->
表示您在换行并且可能缺少;
DATABASE(>
(>
表示您还没有关闭括号DATABASE'>
'>
表示您还没有关闭报价。
等等,你懂的。