Postgres: связь не существует ошибка


14

Я использовал pg_restore для загрузки моей базы данных postgres с файлом дампа. Я подключился к моей БД с моим пользователем:

sudo -u arajguru psql dump

select current_user;
 current_user 
--------------
 arajguru

Теперь я смог увидеть все вновь созданные таблицы:

dump=> \dt
               List of relations
 Schema |       Name        | Type  |  Owner   
--------+-------------------+-------+----------
 public | Approvals         | table | arajguru
 public | Approvers         | table | arajguru
 public | Conditions        | table | arajguru
 public | Entities          | table | arajguru
 public | EntityDefinitions | table | arajguru
 public | Projects          | table | arajguru
 public | Rules             | table | arajguru
 public | run_history       | table | arajguru
(8 rows)

Но когда я пытаюсь запустить запрос select *, он выдает мне эту ошибку:

dump=> select * from Approvals;
ERROR:  relation "approvals" does not exist
LINE 1: select * from Approvals;

В чем может быть причина этой ошибки? Пожалуйста помоги.

Ответы:


24

Вы создали свои таблицы с двойными кавычками, и теперь имена чувствительны к регистру.

Как задокументировано в руководстве "Approvals" и Approvalsдва разных названия.

Теперь, когда вы создали имена таблиц с учетом регистра, вы должны всегда использовать эти страшные двойные кавычки.

select * 
from "Approvals";

Как общий совет: никогда не используйте двойные кавычки в SQL.


1
Спасибо! Работаю сейчас. Как вы узнали, что таблицы были созданы с двойными кавычками?
Аюши Раджгуру

1
@AyushiRajguru: потому что «Список таблиц» показывает их в верхнем / нижнем регистре. Единственный способ добиться этого - использовать двойные кавычки (как
описано

ааа, у меня было то же самое с журналами против "журналов" спасибо youuuuu <3
csomakk
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.