2016-05-09 3 views
0

Я работаю над существующим проектом, который использует базу данных postgresql. Это мой первый опыт работы с postgresql.Доступ к ассоциативным таблицам postgresql

У меня есть одна серьезная проблема, которая полностью блокирует меня.

В сценарии создания базы данных, у меня есть следующие строки:

CREATE TABLE "TA_cat_group" (
    cat character varying NOT NULL, 
    group character varying NOT NULL 
); 

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

List of relations 
Schema |   Name   | Type | Owner 
--------+-------------------------+----------+-------- 
public | TA_cat_group   | table | vit 
public | cat      | table | vit 
... 

Затем я могу сделать \d cat, чтобы получить доступ к описанию таблицы кошек.

Однако, если я \d TA_cat_group появляется следующая строка:

Did not find any relation named "TA_cat_group". 

Из-за этот вопрос я являюсь неспособным делать запросы на этой таблице ... Что может быть причиной этого?

PS: Я сделал \c vit раньше, поэтому я подключен по правой базе данных, что, похоже, не является причиной моей проблемы. Более того, эта схема должна быть общедоступной ...

+1

try; '\ d" TA_cat_group "' – joop

ответ

2

Из-за двойных кавычек ваше имя таблицы теперь имеет случай чувствительный. "TA_cat_group" - это другое имя, а затем TA_cat_group.

Вы должны использовать

\d "TA_cat_group" 

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

Подробнее в руководстве:
http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS


несвязанные, но: вы не можете использовать group в качестве имени столбца без заключая его в двойные кавычки, потому что это является зарезервированным ключевым словом. Ваш пример create table в вашем вопросе приведет:

ERROR: syntax error at or near "group"

Единственный способ избежать этой ошибки будет использовать "group" вместо group - но тем не менее будет использовать эти страшные двойные кавычки.

+0

Большое вам спасибо :) Вы просто дали мне прекрасный ответ на мою проблему! –

Смежные вопросы