Sqlite3提示“…>;”而不是'sqlite>`

Sqlite3提示“…>;”而不是'sqlite>`,sqlite,Sqlite,我正在学习sqlite3的初学者教程。第一步是创建一个新的数据库。所以我输入了一个名字(movies.db) 我希望在下一行得到另一个sqlite>提示,并继续学习教程,但是我得到了一个跛脚的…>,之后我可以键入任何我想要的乱码。显然,这是不好的 我的命令提示符是什么样子的: SQLite version 3.8.1 2013-10-17 12:57:35 Enter ".help" for instructions Enter SQL statements terminated with a

我正在学习
sqlite3
的初学者教程。第一步是创建一个新的数据库。所以我输入了一个名字(
movies.db

我希望在下一行得到另一个
sqlite>
提示,并继续学习教程,但是我得到了一个跛脚的
…>
,之后我可以键入任何我想要的乱码。显然,这是不好的

我的命令提示符是什么样子的:

SQLite version 3.8.1 2013-10-17 12:57:35
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> $ sqlite3 movies.db
   ...> gibberish
   ...> dsds
   ...> sdada
   ...> gfgys
   ...> a
   ...> Aaaaarrrgh!
   ...>
如何让sqlite3为我正常工作


请原谅我的菜鸟脾气。我希望我对这个问题的措辞也能对其他新手有所帮助。

用a;来结束这个陈述;。所以只要打;然后输入,它将恢复正常(在给出错误后,因为您在这里键入的是错误的sql)

事情是这样的,它认为你还在做一些事情。将长查询分解为以下行可能很有用:

sqlite> select title, description
   ...> from mytable
   ...> where id > 10;
“…>表示它正在等待您完成查询,您可以用分号表示。

Sqlite工作正常。但是,
sqlite movies.db
命令应该从系统命令行发出,而不是从sqlite交互式shell发出。首先退出Sqlite交互式shell(
.exit
),然后发出数据库创建命令

sqlite> CREATE TABLE tbl2 (
   ...>   f1 varchar(30) primary key,
   ...>   f2 text,
   ...>   f3 real
   ...> );
sqlite>
根据报告:

  • 在shell或DOS提示下,输入:“sqlite3 test.db”。这将创建一个名为“test.db”的新数据库。(如果愿意,可以使用其他名称。)

  • 在提示符处输入SQL命令以创建和填充新数据库

  • 一旦从系统命令行正确执行了
    sqlite movies.db
    命令,您将自动被放置到sqlite交互式shell中,该shell将等待命令

    sqlite> create table tbl1(one varchar(10), two smallint);
    
    …>
    shell提示符指示前一行的连续性。如消息所示,您需要使用
    终止每个数据库命令分号

    sqlite> CREATE TABLE tbl2 (
       ...>   f1 varchar(30) primary key,
       ...>   f2 text,
       ...>   f3 real
       ...> );
    sqlite>
    

    我在按了一些箭头键后也处于同样的状态

    sqlite> ^[[A^[[A^[[B
       ...> ;
       ... 30 more lines of randomly-typed unsuccessful characters ...
       ...> /
    sqlite>
    

    正斜杠字符“/”似乎为我解决了这个问题

    我不断地按向上箭头或向左箭头,然后进入下面的内容。 我发现只有control-D有效


    如果您错误地输入了其中任何一项-^[[A^[[A^[[B], 然后只需按[键]


    在括号后面加上分号就可以了。

    你看到上面提到的关于输入SQL语句的部分了吗…
    以分号结尾“
    。新的提示指示器用于连续行。实际上,它没有说要放分号。我为这个简单的问题道歉。我正在使用的教程很臭。我会找到一个新的。你的教程很好。你需要做的就是从系统命令行发出
    sqlite3 movies.db
    命令,而不是Sqlite shell。哈让我们看看下面的答案–它们将有助于您的理解。
    胡言乱语在3.8.1版中被弃用。>用;终止语句。因此只需点击;然后输入,它将恢复正常(在给出错误后,因为您在此处键入的是错误的sql)。这不是真的,至少3.7.11版不是这样。分号会在
    ..>
    提示符处返回(只有ctrl-z可以转义)。也许这是个错误?也会遇到这种情况。有时“)”然后输入,然后后跟“;”,然后输入,这样做。如果您在字符串中,则需要
    “;
    。这太可怕了。至少它应该用cmd+c/ctrl+c关闭。control-z将进程移到后台。它仍在运行。