2014-01-29 35 views
6

我是新來的postgresql,我似乎無法讓它刪除一個表。不能在postgres中刪除一個表

db_dev=# \dt 
      List of relations 
Schema | Name  | Type | Owner 
--------+-------------+-------+------- 
public | DataSources | table | ted 
public | Emails  | table | ted 
public | Users  | table | ted 
(3 rows) 

當我嘗試刪除用戶表它給出了一個錯誤:

db_dev=# drop table Users; 
ERROR: table "users" does not exist 

我在做什麼錯?

+0

您是否嘗試丟棄public.users? – imran

+0

你是不是指'drop table public.Users;'? - 給出了相同的'ERROR:table「用戶」不存在「 –

回答

18

問題是你的用戶表是混合大小寫的(並且Postgres中的對象名區分大小寫)。如果沒有引用表格名稱,Postgres會將提供的名稱摺疊爲「用戶」 - 這不存在。引用表名的解決方案並不是因爲用戶是保留名稱,而是因爲通過引用它可以告訴Postgres刪除「用戶」表而不是「用戶」表。

3

看來,你這樣做是正確的,但你可以嘗試這樣做:

DROP TABLE IF EXISTS Users; 

或本:

DROP TABLE IF EXISTS Public.Users; 

如果存在將被刪除,如果不存在,你就知道。

+0

表名是混合大小寫,你需要引用它。 – gsiems

+0

我不知道在其他dbms中,但它PostgreSQL你不需要引用表名(剛剛測試過) – carexcer

+0

如果表名是混合/大寫的,並且名稱在引號中被創建,則不應該。嘗試'創建表「用戶」作爲選擇current_user作爲用戶名;''看看'如何刪除表用戶''工作。 – gsiems