Postgres: Relasi tidak ada kesalahan

14

Saya menggunakan pg_restore untuk memuat postgres db saya dengan file dump. Saya terhubung ke db saya dengan pengguna saya:

sudo -u arajguru psql dump

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

Sekarang saya dapat melihat semua tabel yang baru dibuat:

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)

Tetapi ketika saya mencoba untuk memunculkan query * terpilih, itu memberi saya kesalahan ini:

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

Apa yang bisa menjadi alasan untuk kesalahan ini? Tolong bantu.

Ayushi Rajguru
sumber

Jawaban:

24

Anda membuat tabel Anda dengan tanda kutip ganda, dan sekarang nama-nama itu case-sensitive

Seperti yang didokumentasikan dalam manual "Approvals" dan Approvalsdua nama berbeda.

Sekarang setelah Anda membuat nama tabel dengan cara case-sensitive, Anda harus selalu menggunakan tanda kutip ganda yang ditakuti itu.

select * 
from "Approvals";

Sebagai saran umum: jangan pernah menggunakan tanda kutip ganda dalam SQL.

seekor kuda tanpa nama
sumber
1
Terima kasih! Sedang bekerja sekarang Bagaimana Anda tahu bahwa tabel dibuat dengan tanda kutip ganda?
Ayushi Rajguru
1
@AyushiRajguru: karena "Daftar tabel" menunjukkan mereka dengan huruf besar / kecil. Satu-satunya cara untuk mencapai itu adalah dengan menggunakan tanda kutip ganda (seperti yang didokumentasikan dalam manual )
a_horse_with_no_name
ahh, saya memiliki hal yang sama dengan log vs "log" terima kasihuuuuu <3
csomakk