>데이터 베이스 >MySQL 튜토리얼 >테이블이 존재하는데도 '관계가 존재하지 않습니다'라는 메시지와 함께 내 PostgreSQL 쿼리가 실패하는 이유는 무엇입니까?

테이블이 존재하는데도 '관계가 존재하지 않습니다'라는 메시지와 함께 내 PostgreSQL 쿼리가 실패하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-20 13:41:09871검색

Why Does My PostgreSQL Query Fail with

PostgreSQL 쿼리 실패: "관계가 존재하지 않습니다" 오류

문제

데이터베이스 쿼리를 실행하면 테이블 이름이 올바르게 표시되는 경우에도 "관계가 존재하지 않습니다"라는 오류가 발생합니다.

솔루션

이 오류는 일반적으로 테이블 이름을 참조하는 방식에 문제가 있음을 나타냅니다. 가장 빈번한 원인은 대소문자 구분 문제입니다. PostgreSQL은 테이블 이름과 관련하여 대소문자를 구분합니다.

예를 들어 다음 쿼리는 실패합니다.

<code class="language-sql">CREATE TABLE "SF_Bands" ( ... );

SELECT * FROM sf_bands;  -- ERROR!</code>

해결책은 큰따옴표를 사용하여 테이블 이름의 대소문자를 정확히 일치시키는 것입니다.

<code class="language-sql">SELECT * FROM "SF_Bands";</code>

스키마 검색 경로 사용

또 다른 접근 방식은 search_path을 수정하는 것입니다. 이 설정은 PostgreSQL이 데이터베이스 내에서 객체(예: 테이블)를 검색하는 순서를 지정합니다. 검색 경로에 테이블의 스키마를 추가하면 스키마를 명시적으로 지정하지 않고도 테이블을 참조할 수 있습니다.

현재 검색 경로를 확인하려면:

<code class="language-sql">SHOW search_path;</code>

showfinder 스키마를 추가하려면(실제 스키마로 교체):

<code class="language-sql">SET search_path TO showfinder,public;</code>

검색 경로를 조정한 후 소문자 이름을 사용하여 테이블을 쿼리할 수 있습니다.

<code class="language-sql">SELECT * FROM sf_bands;</code>

search_path 구성에 대한 자세한 내용은 공식 PostgreSQL 설명서를 참조하세요. https://www.php.cn/link/d7323519970d0e3680ef5fa1edfe0e56

위 내용은 테이블이 존재하는데도 '관계가 존재하지 않습니다'라는 메시지와 함께 내 PostgreSQL 쿼리가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.