Sqlite3 вызывает `...>` вместо `sqlite>`
Я следую учебнику для начинающих до sqlite3
. Первым шагом является создание новой базы данных. Поэтому я ввожу имя (movies.db
).
Я ожидаю получить еще одну приглашение sqlite>
в следующей строке и продолжить работу с учебником, но вместо этого получаю lame ...>
, после которого я могу ввести любые гибкие, которые я хочу. Ясно, что это плохо.
Как выглядит мое командное приглашение:
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 нормально работать для меня?
Простите мою новичку. Надеюсь, я сформулировал этот вопрос таким образом, который мог бы помочь другим новинкам тоже.
Ответы
Ответ 1
Sqlite работает нормально. Однако команда sqlite movies.db
должна выводиться из командной строки системы, а не из интерактивной оболочки Sqlite. Начните с выхода из интерактивной оболочки Sqlite (.exit
), а затем выполните команду создания базы данных.
В соответствии с документацией быстрого запуска:
-
В командной строке или в командной строке DOS введите: "sqlite3 test.db". Это создаст новую базу данных с именем "test.db". (Если хотите, вы можете использовать другое имя.)
-
Введите команды SQL в приглашение для создания и заполнения новой базы данных.
Как только команда sqlite movies.db
будет правильно выполнена из вашей системной командной строки, вы автоматически поместите ее в интерактивную оболочку Sqlite, которая будет ожидать команды.
sqlite> create table tbl1(one varchar(10), two smallint);
Приглашение оболочки ...>
указывает на продолжение из предыдущей строки. Как указано в сообщении, вам необходимо завершить каждую команду базы данных с помощью точки с запятой ;
.
sqlite> CREATE TABLE tbl2 (
...> f1 varchar(30) primary key,
...> f2 text,
...> f3 real
...> );
sqlite>
Ответ 2
Завершить утверждение с помощью.; Так что просто ударьте; затем введите, и он вернется к нормальному (после получения ошибки, потому что то, что вы набрали здесь, является плохим sql).
Что происходит, он думает, что вы все еще работаете над чем-то. Может быть полезно разбить длинные запросы на строки следующим образом:
sqlite> select title, description
...> from mytable
...> where id > 10;
И... означает, что он ждет, когда вы закончите свой запрос, который вы обозначаете точкой с запятой.
Ответ 3
Я постоянно нажимаю стрелку или стрелку влево и вникаю в это ниже.
Я обнаружил, что работает только control - D.
sqlite> ^[[A
...> '
...> ;
...>
...> ;
...>
...>
...>
...>
...> ^C
...> ^X
...>
...>
...>
...>
...>
...>
...> ^E
...> ^R
...> ^T
...> ^Y
...> ^K
...> ^X
...> quit
...> '
...> ;
...> /
...> g
...>
...>
...> .exit
...> )
...> ;
...> /
...> ;
...> /
...> /
...> /
...> /
...> /
...> /
...> /
...> /
...> /
...> /
...> /
...> >
...> ;
...> /
...> '/
...> ;
...> ,
...> ;
...> ^[[D
...> /
...> .quit
...> ∂
' ...> Error: incomplete SQL:
Ответ 4
Я попал в одно и то же состояние после нажатия клавиш со стрелками
sqlite> ^[[A^[[A^[[B
...> ;
... 30 more lines of randomly-typed unsuccessful characters ...
...> /
sqlite>
Символ прямой косой черты '/', казалось, решил это для меня.
Ответ 5
Правильно, как еще один новичок, эти эксперты не отвечают правильно на вопрос, предполагая, что мы знаем, что мы делаем, и не полностью испортили какое-либо подобие оператора SQL. Они правильно указывают, что мы должны были завершить точкой с запятой, но не смогли исправить ситуацию выхода из этой теперь бесконечной ситуации, поскольку точка с запятой не работает. В комментариях было несколько полезных вещей, которые помогли мне собрать воедино проблему. В какой-то момент первоначальной ошибки или случайного набора символов, введенных для ее исправления, вы (и я, и из того, что в Интернете говорится о куче людей) открывают какое-то утверждение, например (или [или] или "так, что; на самом деле не остановит его. Ctrl + D, конечно, работает, но он полностью закрывает программу, поэтому вы теряете все уже введенное и вам приходится возвращаться и заново настраивать файл. Очень раздражает.
Ответ - закрыть выражение, которое вы случайно открыли. Так что постарайтесь ); или же ]; или же '; или "; пока вы его не получите. Если кто-то может предложить другого оператора, которого вы можете случайно открыть, сделайте это!
Надеюсь, это поможет вам и другим людям, таким как я. Я искал слишком долго лол.
Ответ 6
Если вы введете любой из них по ошибке - ^ [[A ^ [[A ^ [[B, затем просто нажмите];
Закрытие скобки с последующей точкой с запятой делает свое дело.