복붙노트

[SQL] PostgreSQL의 "열이 존재하지 않습니다"하지만 실제로 수행

SQL

PostgreSQL의 "열이 존재하지 않습니다"하지만 실제로 수행

나는 자동으로 빌드하고 실행하는 SQL 쿼리에 대한 Java 응용 프로그램을 쓰고 있어요. 많은 테이블을 내 코드는 잘 작동하지만, 특정 테이블에 다음과 같은 예외를 던지는 붙어 가져옵니다

Exception in thread "main" org.postgresql.util.PSQLException: ERROR: column "continent" does not exist
  Hint: Perhaps you meant to reference the column "countries.Continent".
  Position: 8

실행 된 쿼리는 다음과 같다 :

SELECT Continent
FROM network.countries
WHERE Continent IS NOT NULL
AND Continent <> ''
LIMIT 5

이것은 본질적으로 열에서 5 비어 있지 않은 값을 반환합니다.

나는 그것을 명확하게 pgAdmin 4에서와 때 테이블 국가를 포함하는 이름 네트워크와 스키마가있는 것을 볼 수 있습니다 오류 "존재하지 않는 열"를 받고 있어요 이유를 이해하지 않고 해당 테이블라는 열이 대륙은 그냥 예상.

모든 열, 스키마 및 테이블 이름은 응용 프로그램 자체에 의해 검색되어 있기 때문에 나는 왜 PostgreSQL의 문제를 일으킬 않습니다에 관계없이 맞춤법이나 의미 론적 오류가 있음을 생각하지 않아? pgAdmin4에서 쿼리를 실행이나이 countries.Continent가 작동 제안 사용.

내 PostgreSQL의 버전은 현재 최신입니다 :

$ psql --version
psql (PostgreSQL) 9.6.1

어떻게 성공적으로 쿼리를 실행할 수 있습니까?

해결법

  1. ==============================

    1.큰 따옴표로 받아보십시오 - 질의에서 "대륙"와 같은 :

    큰 따옴표로 받아보십시오 - 질의에서 "대륙"와 같은 :

    SELECT "Continent"
    FROM network.countries
    ...
    
  2. ==============================

    2.pgAdmin3 테이블 이름은 "TABLENAME"입니다 대신 tablename 사용하지 않기 때문에 때문에이 문제가 발생합니다. 에 대한 예 :. 이 테이블 이름으로 사용자를 표시되면, 테이블 이름이 아닌 "사용자"입니다.

    pgAdmin3 테이블 이름은 "TABLENAME"입니다 대신 tablename 사용하지 않기 때문에 때문에이 문제가 발생합니다. 에 대한 예 :. 이 테이블 이름으로 사용자를 표시되면, 테이블 이름이 아닌 "사용자"입니다.

    이것 좀 봐:

  3. ==============================

    3.SQLAlchemy의 환경 작업에서, 나는이 같은 SQL로이 오류를 가지고있다,

    SQLAlchemy의 환경 작업에서, 나는이 같은 SQL로이 오류를 가지고있다,

       db.session.execute(
        text('SELECT name,type,ST_Area(geom) FROM buildings WHERE type == "plaza" '))
    

    ERROR : 열 "광장"존재하지 않는

    다음과 같은 글쎄, 난 = 의해 == 변경, 오류가 지속, 그럼 난, 따옴표를 상호 교환. 그것은했다. 기묘한!

    .... 
    text("SELECT name,type,ST_Area(geom) FROM buildings WHERE type = 'plaza' "))
    
  4. from https://stackoverflow.com/questions/41591386/postgresql-column-does-not-exist-but-it-actually-does by cc-by-sa and MIT license