Какой оператор SQL можно запустить в консоли Rails для описания ограничений таблицы / внешних ключей? - PullRequest
0 голосов
/ 22 января 2020

Я создаю приложение Rails в среде AWS Cloud9. Его база данных предоставлена ​​гемом sqlite3.

Я нахожусь в моей консоли Rails и пытаюсь выполнить запрос SQL для описания конкретной таблицы c. Я думаю, что что-то пошло не так с миграцией, и моя схема неверна, и я хочу изучить ограничения / внешние ключи в базовой таблице базы данных.

Я попытался запустить: ActiveRecord::Base.connection.execute("desc resorts;"), но это дает мне SQLite3::SQLException syntax error.

Я пробовал с и без ; и с прописными и строчными буквами desc. Я пробовал describe, describe table и несколько других вещей, которые я нашел в различных статьях, но, похоже, ничего не работает.

Я считаю, что синтаксис моего вызова метода правильный, потому что он работает нормально для меня: ActiveRecord::Base.connection.execute("select * from resorts;")

Можно ли использовать оператор SQL, который покажет мне информацию об ограничениях / внешних ключах в этой таблице?

1 Ответ

0 голосов
/ 22 января 2020

Если вы посмотрите на документацию , вы увидите, что в sqlite нет команды DESC или DESCRIBE.

Чтобы вывести список внешних ключей, используемых в конкретной таблице, Вы можете использовать PRAGMA foreign_key_list(tablename).

Для составления списка уникальных индексов и ограничений вы можете использовать табличную функцию в виде PRAGMA index_list(tablename):

SELECT * FROM pragma_index_list('tablename') WHERE "unique" = 1;

Чтобы перечислить NOT NULL столбцов, вы можете использовать табличную функцию в виде PRAGMA table_info(tablename):

SELECT * FROM pragma_table_info('tablename') WHERE "notnull" = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...