首页 > 解决方案 > 为什么有些 psql 行在数据库名称后有 (# 或 '#?

问题描述

我在 Mac 的命令行中使用 psql。通常,当我键入命令时,开头的行显示为database_name=#. 我用 a 终止命令;,效果很好。

有时,当我编写命令(已从我正在阅读的教科书中复制和粘贴)时,我最终会得到以下开头的行之一:

postgis_in_action(#

postgis_in_action'#

请问(和是什么'意思?我如何逃脱它们以恢复“正常”?

标签: postgresqlpsql

解决方案


当您键入一个多行查询并且有一些起始和结束括号(例如())时,起始行将更改以让用户知道他已经开始了一个需要关闭的括号。

见下面的例子:

    node1=# select
node1-# *
node1-# from
node1-# dept
node1-# where
node1-# deptno=
node1-# 1 and loc in
node1-# (
node1(# 'isb'
node1(# )
node1-# ;
 deptno | dname | loc 
--------+-------+-----
(0 rows)

node1=#

如果用户以某种方式忘记关闭方括号,则开始行将显示 database_name(#

即使是缺少一些括号的单行查询也会导致相同的开头行。

node1=# select * from dept where deptno=1 and loc in ('isb';

节点1(#

要使开头行正常,您必须完成查询或只需按CTRL+C键。

披露:我为EnterpriseDB (EDB)工作


推荐阅读