programing

Postgresql 스키마 경로 영구 설정

subpage 2023. 5. 4. 19:57
반응형

Postgresql 스키마 경로 영구 설정

매번 스키마 도트 테이블을 지정하지 않도록 Postgres에서 스키마 경로를 설정해야 합니다. schema2.table스키마 경로 설정:

SET SCHEMA PATH a,b,c

쿼리 창을 닫은 후 경로 변수가 기본값으로 다시 설정됩니다.

어떻게 하면 영구적으로 만들 수 있습니까?

(서버에 대한 관리자 권한이 없는 경우)

ALTER ROLE <your_login_role> SET search_path TO a,b,c;

알아야 할 두 가지 중요한 사항:

  1. 스키마 이름이 단순하지 않을 경우 큰따옴표로 묶어야 합니다.
  2. 기본 스키마를 설정하는 순서a, b, c테이블에 대한 스키마를 조회하는 순서이기도 하기 때문에 문제가 발생합니다.따라서 기본값 중 둘 이상의 스키마에 동일한 테이블 이름이 있으면 모호성이 없으며 서버는 항상 사용자가 지정한 첫 번째 스키마의 테이블을 사용합니다.search_path.

기본값을 설정할 수 있습니다.search_path데이터베이스 수준에서:

ALTER DATABASE <database_name> SET search_path TO schema1,schema2;

또는 사용자 또는 역할 수준에서:

ALTER ROLE <role_name> SET search_path TO schema1,schema2;

또는 role+database 레벨(이 점을 지적해 준 Chris에게 감사합니다!):

ALTER ROLE <role_name> IN DATABASE <database_name> SET search_path TO schema1,schema2;

또는 모든 데이터베이스에 공통 기본 스키마가 있는 경우 search_path 옵션을 사용하여 구성 파일에서 시스템 전체의 기본값을 설정할 수 있습니다.

데이터베이스가 작성될 때 기본적으로 template1이라는 숨겨진 "템플릿" 데이터베이스에서 작성되며, 이후에 작성된 모든 데이터베이스에 대한 새로운 기본 검색 경로를 지정하도록 데이터베이스를 변경할 수 있습니다.다른 템플리트 데이터베이스를 작성하고 사용할 수도 있습니다.CREATE DATABASE <database_name> TEMPLATE <template_name>데이터베이스를 만듭니다.

조쉬가 옳지만 한 가지 변형을 빠뜨렸습니다.

ALTER ROLE <role_name> IN DATABASE <db_name> SET search_path TO schema1,schema2;

특정 데이터베이스에서 사용자의 검색 경로를 설정합니다.

컴퓨터에서 하나의 데이터베이스로만 작업하는 경우 기본 스키마를 저장할 수 있습니다.~/.psqlrc:

set search_path to a,b,c

자세한 내용은 여기를 참조하십시오.기본 연결 정보를 저장하여 간단히 실행하려면psql매번 환경 변수를 사용해야 합니다.

export PGHOST=localhost
export PGPORT=5432
export PGDATABASE=database
export PGUSER=username

언급URL : https://stackoverflow.com/questions/2875610/permanently-set-postgresql-schema-path

반응형