2014-01-29 2 views
6

저는 postgresql을 처음 사용하기 때문에 테이블을 삭제할 수 없습니다.포스트 그레스에서 테이블을 삭제할 수 없습니다

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

내가 잘못 뭐하는 거지 :

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

나는 그것이 오류를 제공하는 사용자 테이블을 삭제하려고

?

+0

public.users를 삭제하려고 시도 했습니까? – imran

+0

'drop table public.Users; '를 의미합니까? - 같은 'ERROR : table'사용자에게 "존재하지 않습니다."라고 말한 –

답변

18

문제는 사용자 테이블이 대소 문자를 혼합하고 Postgres의 개체 이름이 대소 문자를 구분한다는 것입니다. 테이블 이름 주위에 따옴표가 없으면 Postgres는 제공된 이름을 "users"로 접을 것입니다 - 존재하지 않습니다. 사용자가 예약 된 이름이기 때문에가 아니라, 인용함으로써 "사용자"테이블이 아닌 "사용자"테이블을 삭제하도록 Postgres에 지시하기 때문에 테이블 이름을 인용하는 솔루션이 작동합니다.

3

당신이 바로 그 일을하는 것 같다,하지만 당신은이 일을 시도 할 수 있습니다 :

DROP TABLE IF EXISTS Users; 

나이 : 삭제됩니다있는 경우

DROP TABLE IF EXISTS Public.Users; 

을, 그리고이있는 경우 당신이 알고있는 것 .

+0

테이블 이름은 대소 문자를 구 분하므로 따옴표를 붙여야합니다. – gsiems

+0

다른 DBMS에서는 모르겠지만 PostgreSQL에서는 테이블 이름을 인용 할 필요가 없습니다 (방금 테스트 한 경우) – carexcer

+0

테이블 이름이 따옴표로 묶인 대/소문자로 작성된 경우에는 아닙니다. 'create table "Users"를 current_user를 username으로 선택하고'drop table users; '가 얼마나 효과적인지보십시오. – gsiems

관련 문제