[SQL] PostgreSQL의 열 'foo는'존재하지 않는
SQLPostgreSQL의 열 'foo는'존재하지 않는
나는 20 정수 열 및 1 텍스트 열이있는 테이블이 '갑'라는 이름이
나는 쿼리를 실행하는 경우 :
SELECT * from table_name where foo is NULL
나는 오류가 발생합니다 :
ERROR: column "foo" does not exist
나는 그의 열이 실제로 존재하는지 자신을 확인했다. 내가 좋아하는 뭔가를 할 경우 :
SELECT * from table_name where count is NULL
열 중 하나로서 생성 된 출력 프로그램 '갑'.... 나는 foo는 텍스트 열이기 때문에 쿼리에 뭔가 특별한 할 필요가 추측하고있다 ...
도움을 주셔서 감사합니다 (POSTGRESQL 8.3)
해결법
-
==============================
1.당신은 실수로 후행 공백으로 열 이름을 생성 아마도 phpPGadmin은 큰 따옴표로 열 이름을 만든 :
당신은 실수로 후행 공백으로 열 이름을 생성 아마도 phpPGadmin은 큰 따옴표로 열 이름을 만든 :
create table your_table ( "foo " -- ... )
즉 어디에서나라는 것처럼 foo를 보였다 것을 당신에게 열을 줄 것입니다하지만 당신은 큰 따옴표로 그것을 가지고 당신이 그것을 사용할 때마다 공간을 포함 할 것입니다 :
select ... from your_table where "foo " is not null
가장 좋은 방법은 PostgreSQL을 함께 소문자 인용 부호로 둘러싸이지 않은 열 이름을 사용하는 것입니다. 내가 그 설정 (또는 존재하는 경우에도)하지 어디에 할 수 있도록하지만, 슬프게도 (예 : 테이블 및 열 이름과 같은) 식별자, 나는 phpPGadmin를 사용하지 않는 인용하지 그것을 말할 것이다 phpPGadmin의 어딘가의 설정이 있어야합니다.
-
==============================
2.어떤 이유로 당신이 혼합 된 경우 또는 대문자 열 이름을 만든 경우, 당신은 그것을 인용, 또는이 오류를 얻을 필요가 :
어떤 이유로 당신이 혼합 된 경우 또는 대문자 열 이름을 만든 경우, 당신은 그것을 인용, 또는이 오류를 얻을 필요가 :
test=> create table moo("FOO" int); CREATE TABLE test=> select * from moo; FOO ----- (0 rows) test=> select "foo" from moo; ERROR: column "foo" does not exist LINE 1: select "foo" from moo; ^ test=> _
오류 메시지가 따옴표의 경우를 제공하는 방법을합니다.
-
==============================
3.PostreSQL는 분명히 SQL 쿼리에서 소문자로 열 이름을 변환 - 나는 혼합 된 경우 열 이름은 그 오류를 줄 것이다 문제를 본 적이있다. 당신은 인용 부호 열 이름을 넣어 문제를 해결할 수 있습니다 :
PostreSQL는 분명히 SQL 쿼리에서 소문자로 열 이름을 변환 - 나는 혼합 된 경우 열 이름은 그 오류를 줄 것이다 문제를 본 적이있다. 당신은 인용 부호 열 이름을 넣어 문제를 해결할 수 있습니다 :
SELECT * FROM table_name where "Foo" IS NULL
-
==============================
4.다른 사람이 의견 제시,이 아마도 낮은 경우, 또는 열 이름의 일부 공백 대 대문자의 문제이다. (. 나는 몇 가지 코드 샘플을 포맷 할 수 있도록 내가 대답을 사용하고 있습니다) 열 이름이 정말 무엇인지 확인하려면이 쿼리를 실행 해보십시오 :
다른 사람이 의견 제시,이 아마도 낮은 경우, 또는 열 이름의 일부 공백 대 대문자의 문제이다. (. 나는 몇 가지 코드 샘플을 포맷 할 수 있도록 내가 대답을 사용하고 있습니다) 열 이름이 정말 무엇인지 확인하려면이 쿼리를 실행 해보십시오 :
SELECT '"' || attname || '"', char_length(attname) FROM pg_attribute WHERE attrelid = 'table_name'::regclass AND attnum > 0 ORDER BY attnum;
당신은, 그것은 문에 대해보고 무엇을 볼 수 있다면 당신은 아마 또한 PostgreSQL 서버 로그를 확인해야합니다.
당신이 식별자를 인용하는 경우, 따옴표로 모든 대문자 문자, 줄 끝에 공백 및 특수 문자를 포함하여 식별자의 일부입니다. 유일한 예외는 두 개의 인접한 인용 문자가 하나 개의 인용 문자에 대한 이스케이프 시퀀스로 간주된다는 것이다. 식별자가 따옴표로하지 않을 때, 모든 문자는 소문자로 접어된다. 여기에 정상적인 동작의 예입니다 :
test=# create table t (alpha text, Bravo text, "Charlie" text, "delta " text); CREATE TABLE test=# select * from t where Alpha is null; alpha | bravo | Charlie | delta -------+-------+---------+-------- (0 rows) test=# select * from t where bravo is null; alpha | bravo | Charlie | delta -------+-------+---------+-------- (0 rows) test=# select * from t where Charlie is null; ERROR: column "charlie" does not exist LINE 1: select * from t where Charlie is null; ^ test=# select * from t where delta is null; ERROR: column "delta" does not exist LINE 1: select * from t where delta is null; ^
상단에 보여 주었다 쿼리 나는이 산출 :
?column? | char_length -----------+------------- "alpha" | 5 "bravo" | 5 "Charlie" | 7 "delta " | 6 (4 rows)
-
==============================
5.그것은 전체 문제입니다 스스로 따옴표 수 있습니다. 나는 비슷한 문제가 있었다 그리고 그것은 CREATE TABLE 문에서 열 이름에 따옴표 때문. 참고 단지 문제를 일으키는 인용, 어떤 공백 문제가 없었다.
그것은 전체 문제입니다 스스로 따옴표 수 있습니다. 나는 비슷한 문제가 있었다 그리고 그것은 CREATE TABLE 문에서 열 이름에 따옴표 때문. 참고 단지 문제를 일으키는 인용, 어떤 공백 문제가 없었다.
그 속에서 열이 ANID라고했지만 정말 "ANID"라고했다. 가 (이 포스트 그레스의 신인) 검출하기 힘들었다 있도록 따옴표는 일반적인 쿼리에 나타나지 않습니다. 이 포스트 그레스에 9.4.1
좀 더 세부 사항 :
포스트 그레스를 수행하면 = # 시험 SELECT * FROM; 준 :
anID | value ------+------- 1 | hello 2 | baz 3 | foo (3 rows)
하지만 테스트에서 단지 첫 번째 열에 SELECT ANID를 선택하려고; 오류 결과 :
ERROR: column "anid" does not exist LINE 1: SELECT anID FROM test; ^
그냥 도움이 열 이름에하지 않았다 찾고 : 포스트 그레스 = # \ D 시험;
Table "public.test" Column | Type | Modifiers --------+-------------------+----------- anID | integer | not null value | character varying | Indexes: "PK on ID" PRIMARY KEY, btree ("anID")
하지만 pgAdmin에 당신은 열 이름과 함께 채워 SQL 창에서보기를 클릭하면 :
ALTER TABLE test ADD COLUMN "anID" integer; ALTER TABLE test ALTER COLUMN "anID" SET NOT NULL;
보라와 보라 열 이름 주위 quoutes이있다. 그럼 결국 포스트 그레스 = # 테스트로부터 "ANID"을 선택; 잘 작동합니다 :
anID ------ 1 2 3 (3 rows)
같은 도덕적, 따옴표를 사용하지 마십시오.
-
==============================
6.나는 값 내부에 아포스트로피 ( ')로 인용 부호 ( ")로 변경하여 고정 예를 들면 다음과 같습니다.
나는 값 내부에 아포스트로피 ( ')로 인용 부호 ( ")로 변경하여 고정 예를 들면 다음과 같습니다.
트럭에 ( "ID", "날짜") VALUES (862 '2002년 10월 9일 9시 15분 59초 ")를 삽입;
이되다 :
트럭에 ( "ID", "날짜") VALUES (862, '10 -09-2002 9시 15분 59초 ')를 삽입;
날짜 열을 가정하면이 VarChar입니다.
-
==============================
7.문제가 있기 때문에 열 이름 발생하는 것은 낙타 경우에 내부적으로는 ""그것을 랩 (큰 따옴표) 테이블 사용 작은 따옴표 ( '')에 삽입 된 값의 시간에,이 문제를 해결하기
문제가 있기 때문에 열 이름 발생하는 것은 낙타 경우에 내부적으로는 ""그것을 랩 (큰 따옴표) 테이블 사용 작은 따옴표 ( '')에 삽입 된 값의 시간에,이 문제를 해결하기
예를 들면 ( '' '' '') 값 schema_name.table_name 삽입;
-
==============================
8.우리가 phppgadmin 클라이언트를 사용하여 테이블을 만들 때 우리는이 문제에 달렸다. phppgadmin으로 우리는 열 이름에 따옴표를 지정하지 않은 여전히 우리는 같은 문제 다 퉜다.
우리가 phppgadmin 클라이언트를 사용하여 테이블을 만들 때 우리는이 문제에 달렸다. phppgadmin으로 우리는 열 이름에 따옴표를 지정하지 않은 여전히 우리는 같은 문제 다 퉜다.
그것은 우리가 낙타 케이스로 열을 만들 수는 phpPGAdmin는 암시 적으로 열 이름 주위에 따옴표를 추가합니다. 당신이 모두 소문자로 열을 만드는 경우에 당신은이 문제로 실행되지 않습니다.
당신은 phppgadmin의 열을 변경하고이 문제가 사라집니다 모두 소문자로 열 이름을 변경할 수 있습니다.
-
==============================
9.나는 열 이름을 qutating하여 유사한 문제 해결
나는 열 이름을 qutating하여 유사한 문제 해결
SELECT * from table_name where "foo" is NULL;
제 경우에는 그냥했다
SELECT id, "foo" from table_name;
같은 오류가 발생했습니다 i'v 따옴표없이.
from https://stackoverflow.com/questions/10200769/postgresql-column-foo-does-not-exist by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 열 이름 SqlDataReader.GetValue하여 데이터를 얻을 수 있습니다 (0) | 2020.06.30 |
---|---|
[SQL] "이 SqlTransaction이 완료되었습니다; 더 이상 사용할 수 없습니다. "... 구성 오류? (0) | 2020.06.30 |
[SQL] 어떻게 LINQ와 SELECT UNIQUE을 할 수 있습니까? (0) | 2020.06.30 |
[SQL] 두 번 항목 회계에 대한 관계형 데이터 모델 (0) | 2020.06.30 |
[SQL] SQL 서버 클러스터 인덱스 - 인덱스 질문의 순서 (0) | 2020.06.30 |