Команды SQlite3 не отображают таблицы из учебного приложения rails - PullRequest
2 голосов
/ 08 ноября 2010

Это наверное что-то простое, что мне не хватает. Я работаю над прагматичной книжной полкой ruby ​​по упражнениям на рельсах в AWDWR 4th edition.

Все шло хорошо, и затем я наткнулся на часть, где вы вводите в инструменты командной строки sqlite 3, чтобы убедиться, что он захватывает информацию о заказе.

Когда я пытаюсь запустить оператор выбора для заказов, я получаю:

sqlite> select * from orders;
SQL error: no such table: orders

Затем я попытался перечислить все таблицы:

sqlite> .tables
sqlite> 

Я получаю командную строку sqlite в соответствии с инструкциями в книге:

sqlite3 -line

Есть что-то простое, что я здесь упускаю?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 08 ноября 2010

Вам необходимо указать имя файла базы данных в командной строке sqlite3 . Обычно *, если вы не укажете имя файла базы данных, он начнет работать с пустой, временной базой данных в памяти.

* Имеющаяся у меня версия ( sqlite3 3.7.2) фактически принимает -line в качестве имени файла базы данных, если нет дополнительных аргументов. Это означает, что я получаю файл с именем -line; этот файл можно удалить с помощью rm ./-line.

Возможно, вы хотите это (запустить из корневого каталога вашего приложения):

sqlite3 -line db/development.sqlite3

Если ваш проект использует Rails 3, то вы можете использовать это:

rails db

Если вам нужно поведение -line, вы можете использовать .mode line в командной строке sqlite3 .

Если вы хотите получить доступ к БД в среде, отличной от среды по умолчанию, просто добавьте имя среды:

rails db staging

Вы также можете добавить -p, если хотите автоматически использовать имя пользователя и пароль из вашей конфигурации ( sqlite3 не требует имени пользователя или пароля, поскольку он использует простые разрешения Unix):

rails db -p production
1 голос
/ 08 ноября 2010

Чтобы отобразить все таблицы в sqlite:

>select * from sqlite_master
0 голосов
/ 16 ноября 2014

Перейдите в папку db по терминалу и введите

$ sqlite3 development.sqlite3
SQLite version 3.7.7 2011-06-25 16:35:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .table

, и она покажет сделанные вами таблицы.

0 голосов
/ 25 августа 2014

У меня была похожая проблема (не получая ничего обратно), но я использую Windows, и, кажется, у меня проблема, когда я использую диски с путем (c: \ или d :). Я смог решить ее, запустив sqllite из пути к базе данных и используя только имя файла, например:

C:\mydir\sqlite3.exe  -line mydb.db
.tables

или

C:\mydir\sqlite3.exe
.open mydb.db

или

C:\mydir\sqlite3.exe
ATTACH "mydb.db" AS db1;

Для отображения таблицы:

select * from mytable;

или

select * from db1.mytable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...