Postgres:関係が存在しないエラー


14

pg_restoreを使用して、ダンプファイルでpostgres dbをロードしました。私は自分のユーザーで自分のデータベースに接続しました:

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"し、Approvals2人の異なる名前です。

大文字と小文字を区別する方法でテーブル名を作成したので、これらの恐ろしい二重引用符を常に使用する必要があります。

select * 
from "Approvals";

一般的なアドバイスとして、SQLでは二重引用符使用しないでください


1
ありがとう!今働いています。テーブルが二重引用符で作成されたことをどのようにして知りましたか?
Ayushi Rajguru 2017

1
@AyushiRajguru:「テーブルのリスト」が大文字/小文字でそれらを表示するため。これを実現する唯一の方法は、二重引用符を使用することです( マニュアルに記載されています
a_horse_with_no_name

ああ、私は、「ログ」は3 <youuuuuに感謝VSログと同じだった
csomakk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.