SQLite3 命令行:如何取消命令?

the*_*fog 19 command-line line-editor sqlite

我在 SQLite 命令提示符下编写命令时犯了一个错误,我现在想中止,这就是我的命令行的外观

sqlite> select * from todos'
   ...> '
   ...> ;^C
Run Code Online (Sandbox Code Playgroud)

在这种情况下,可能是因为我打开了一个引号,我什ENTER至无法运行命令。我只是得到一个行延续,这仍然不太理想,因为我将不得不运行错误的代码和原因和错误,只是为了重新控制提示。
如何取消行/命令并返回到提示?

Kus*_*nda 19

sqlite3界面使用 ReadLine 库进行命令行编辑。您可以使用 擦除整行,Ctrl+U但一旦按下Enter,该行已被接受且不再可编辑。

正如您所注意到的,发送Ctrl+D会提示客户端退出,这不是您想要的。

你最好的选择是

  1. 关闭任何字符串,然后,
  2. 在发出 final 之前;,生成一个故意的语法错误。

在你的例子中:

sqlite> select * from todos'
   ...> '
   ...> *** I made a mistake
   ...> ;
Error: near "*": syntax error
sqlite>
Run Code Online (Sandbox Code Playgroud)

这将确保不会执行任何操作,并且会让您在 SQLite 会话中保留所有临时表。

  • 如果您在箭头键后按了 Enter,即,您有类似“> ^[[A”,然后是“...>”,那么您必须关闭括号才能取消:“> ]];”。它确实应该支持 Ctrl+C。这样就很讨厌了。 (2认同)