如何取消 Postgres 中的错误命令(从终端)?

Posted

技术标签:

【中文标题】如何取消 Postgres 中的错误命令(从终端)?【英文标题】:How do I cancel a bad command in Postgres (from terminal)? 【发布时间】:2015-12-14 10:57:38 【问题描述】:

我在尝试编写函数时写了一个错误的命令(我在函数中犯了一个错误,想在没有完成函数的情况下退出它),我想退出它,但是终端的命令提示符不会让我。

我试过这个: https://unix.stackexchange.com/questions/45646/how-do-i-exit-or-cancel-a-bad-bash-command

还有这个

***.com/questions/12649896/why-doesnt-my-terminal-output-unicode-characters-properly

但是给出的解决方案都不起作用,我现在处于这种情况(我试图编写一个 pgplsql 函数,我想结束它,但我不知道如何)

message=# create function add_message(_queue_id integer, _sender_id integer, _receiver_id integer, _payload text)
message-# returns integer as $$
message$# declare
message$# result integer;
message$# begin
message$# ;
message$# ;
message$# ;
message$# ;
message$# sdsd
message$# end
message$# ;
message$# return result;
message$# end
message$# <aa
message$# -ls
message$# ls
message$# abort
message$# v
message$#

我试过了:

ctrl + /
crtl+D
ctrl+Z
ctrl+C
esc key
exit 0
:q

注意:我使用的是瑞士德语布局的 osx 键盘。

【问题讨论】:

“一个错误的命令”?到什么?你在使用一些 pgplsql 交互式客户端吗? 我开始写一个plsql函数,犯了一个错误,我想不完成就退出,所以我想知道一般如何在不完成的情况下退出命令。 你用什么程序来写这个函数? 我正在使用终端,但正在运行 postgresql postgresql是一个交互式客户端程序? 【参考方案1】:

我知道这是一篇旧帖子,但这也是我的问题,花了一些时间才最终找到答案。通过终端,我相信 op 意味着 psql 命令行。

\r\reset 是我想要的。 重置(清除)查询缓冲区。

https://www.postgresql.org/docs/9.2/app-psql.html

【讨论】:

【参考方案2】:

从 postgresql 尝试\q。有关更多信息,请参阅exit。 或者,对于更严重的情况: 从另一个终端窗口做

ps

它会给出一个类似的列表

  PID TTY           TIME CMD
57839 ttys000    0:00.02 -bash
57838 ttys001    0:00.05 -bash
57840 ttys002    0:00.17 -bash

上帝是有问题的进程并杀死它

kill 57839

一个新的终端应该有一个以后的号码。请参阅Processes and Daemons 了解更多信息。

【讨论】:

如果我这样做 \q 不会完全退出 psql 吗? @LoveMeow 你是认真的吗? @robert 还有其他类似 ctrl-d 的东西,它只是退出当前命令吗? 程序可以控制所有字符,所以这真的取决于 postgresql 的作用。因此,您可以了解有关 postgresql 的更多信息,或者重新开始(杀死甚至重新启动都会这样做。)这完全取决于您想要将学习曲线投入到哪里。您也可以尝试输入一堆 ')' 和 '' 看看是否会完成您开始输入的内容。

以上是关于如何取消 Postgres 中的错误命令(从终端)?的主要内容,如果未能解决你的问题,请参考以下文章

从 CSV 填充 postgres 表列时出现非空约束错误

如何使用NodeJ从Postgres返回INSERT命令中的所有数据

取消的金额和相应的条目 - Postgres

错误:Postgresql 中的日期/时间字段值超出范围

如何从命令行重新索引 Postgres 9.1.3

如何以与“TABLE name;”相同的方式格式化 postgres 结果做?