2013-06-07 5 views
-3

저는 PostgreSQL에 익숙하지 않습니다. 어쩌면 제가 알아볼 수없는 멍청한 오류가 생길 수 있습니다. 왜이 데이터를 삭제할 수 없는지 말해주십시오.postgresql에서 데이터를 삭제할 수 없습니다.

이 일어나고있는 것입니다 : 내가 장고 사용자를 사용하고 있습니다으로

DELETE FROM userprofile WHERE user LIKE (SELECT User FROM User WHERE username LIKE 'testuser'); 
ERROR: column "username" does not exist 
LINE 1: ...file WHERE user LIKE (SELECT User FROM User WHERE username L... 

나는 이름이 존재하는 않는 것을 알고, 그래서, 내가 얻을 수있는 방법이 삭제?

+0

그래서 '열'사용자 이름은 "존재하지 않습니다." 당신의 질문은 정확히 무엇입니까? 테이블 정의, PostgreSQL 버전? –

+0

나는 사용자 django 사용자이고, 사용자 이름이 존재하지만 왜 삭제되지 않는지 알기를 원합니다. – Sascuash

+1

테이블 정의는 ** 필수 **입니다. –

답변

2

소문자 이름을 생각하지 않았을 가능성이 있습니다 (정보가 부족하여 어둠 속에서 찌르다).

the manual about identifiers으로 시작하십시오.

당신이 얻는 무엇 : 식별자의 총액에

SELECT n.nspname, c.relname, a.attnum, a.attname 
FROM pg_class c 
JOIN pg_attribute a ON a.attrelid = c.oid 
JOIN pg_namespace n ON n.oid = c.relnamespace 
WHERE c.relname ilike 'user' 
AND NOT a.attisdropped -- no dropped (dead) columns 
AND a.attnum > 0  -- no system cols 
ORDER BY 1,2,3 

주의하십시오. 왜? 위의 설명서 링크를 따라 가십시오.

이 열에 이있는 열의 name을 혼동하는 것처럼 보입니다. 존재하지 않기 때문에 오류 메시지는 이름에 대해 불평합니다.

그리고 reserved wordsuser과 같이 사용하면 절대로 문제를 피할 수 없습니다. 그것들은 언제나 큰 따옴표로 묶어야합니다.

+0

SELECT n.nspname, c.relname, a.attnum, a.attname dbou78dfpdee3q-> pg_class의 C dbou78dfpdee3q-> a.attrelid = c.oid dbou78dfpdee3q- pg_attribute ON A를 가입> n.oid ON pg_namespace 않음 가입 FROM = c.relnamespace dbou78dfpdee3q-> c.relname의 ILIKE '사용자' dbou78dfpdee3q-> AND NOT 1,2,3 BY dbou78dfpdee3q-> AND a.attnum> 0 dbou78dfpdee3q-> 주문을 a.attisdropped WHERE; nspname | relname | attnum | attname --------- + --------- + -------- + --------- (0 rows) – Sascuash

+0

@Sascuash : 나 당신은 0 행을 얻을, "사용자"또는 "사용자"또는 "사용자"와 같은 테이블이 전혀 없습니다. 어느 쪽이든, 결코'user'를 테이블 이름으로 사용하지 말고 제가 제공 한 링크를 따르십시오. –

+0

허. http://stackoverflow.com/q/16985083/398670에 대한 비슷한 답변을 작성했습니다. 나는 그들의 질문을 복제하는 사람들에게 상당히 지쳤습니다. ... –

관련 문제