데이터베이스 쿼리를 실행하면 테이블 이름이 올바르게 표시되는 경우에도 "관계가 존재하지 않습니다"라는 오류가 발생합니다.
이 오류는 일반적으로 테이블 이름을 참조하는 방식에 문제가 있음을 나타냅니다. 가장 빈번한 원인은 대소문자 구분 문제입니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!