이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 32.1. 데이터베이스 토토 커뮤니티 제어 기능버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

33.1. 데이터베이스 토토 결과 제어 기능

다음 기능은 a를 연결하는 것을 다룹니다.postgresql백엔드 서버. 응용 프로그램 프로그램에는 한 번에 몇 가지 백엔드 토토 결과이 열릴 수 있습니다. (그렇게해야 할 이유 중 하나는 둘 이상의 데이터베이스에 액세스하는 것입니다.) 각 토토 결과은 A로 표시됩니다.pgconn객체는 함수에서 얻은pqconnectdb, PQCONNECTDBPARAMS또는pqsetdblogin. 이러한 기능은 아마도 널이 아닌 객체 포인터를 항상 반환 할 것입니다. 아마도 메모리가 너무 적지 않는 한pgconn개체. 그만큼PQSTATUS쿼리가 토토 결과 객체를 통해 전송되기 전에 성공적인 토토 결과에 대한 리턴 값을 확인하려면 함수가 호출되어야합니다.

경고

신뢰할 수없는 사용자가 채택되지 않은 데이터베이스에 액세스 할 수있는 경우보안 스키마 사용 패턴, 공개적으로 쓰레기 스키마를 제거하여 각 세션을 시작하십시오search_path. 하나는 매개 변수 키워드를 설정할 수 있습니다옵션value-CSEARCH_PATH =. 또는 발행 할 수 있습니다pqExec (conn, "pg_catalog.set_config ( 'search_path', '', false)" 선택토토 결과 후. 이 고려 사항은libpq; 임의의 SQL 명령을 실행하기 위해 모든 인터페이스에 적용됩니다.

경고

UNIX에서 열린 LIBPQ 토토 결과로 프로세스를 포킹하면 부모 및 자식 프로세스가 동일한 소켓 및 운영 체제 리소스를 공유하기 때문에 예측할 수없는 결과를 초래할 수 있습니다. 이러한 이유로, 그러한 사용은 권장되지 않지만exec새 실행 파일을로드하기 위해 아동 프로세스에서 안전합니다.

PQCONNECTDBPARAMS

데이터베이스 서버에 새로운 토토 결과을합니다.

pgconn *pqconnectdbparams (const char *const *키워드,
                          const char * const * 값,
                          int expand_dbname);

이 함수는 2에서 가져온 매개 변수를 사용하여 새 데이터베이스 토토 결과을 엽니 다.NULL-종결 배열. 첫 번째,키워드는 문자열 배열로 정의되며 각각은 핵심 단어입니다. 두 번째,, 각 키 단어의 값을 제공합니다. 같지 않은pqsetdblogin아래에서는 기능 서명을 변경하지 않고 매개 변수 세트를 확장 할 수 있으므로이 기능을 사용하십시오 (또는 비 차단 아날로그PQConnectStartParamsandpqconnectpoll) 새로운 응용 프로그램 프로그래밍에 선호됩니다.

현재 인식 된 매개 변수 키워드는에 나열되어 있습니다.섹션 33.1.2.

전달 된 배열은 모든 기본 매개 변수를 사용하기 위해 비어 있거나 하나 이상의 매개 변수 설정을 포함 할 수 있습니다. 길이가 일치해야합니다. 처리가 첫 번째로 중지됩니다NULL입력키워드배열. 또한비와 관련된 입력NULL 키워드Entry isNULL또는 빈 문자열, 해당 항목이 무시되고 다음 배열 항목 쌍으로 처리됩니다.

언제expand_dbname는 0이 아니며 첫 번째 값dbname키워드가 확인되어토토 결과 문자열. 그렇다면확장문자열에서 추출한 개별 연결 매개 변수로. 값은 동일한 부호를 포함하는 경우 데이터베이스 이름이 아닌 토토 결과 문자열로 간주됩니다 (=) 또는 URI 체계 지정자로 시작합니다. (토토 결과 문자열 형식에 대한 자세한 내용은섹션 33.1.1.) 첫 번째 발생dbname이런 식으로 처리됩니다. 모든 후속dbname매개 변수는 일반 데이터베이스 이름으로 처리됩니다.

일반적으로 매개 변수 배열은 처음부터 끝까지 처리됩니다. 키워드가 반복되면 마지막 값 (그렇지 않습니다NULL또는 빈)가 사용됩니다. 이 규칙은 특히 토토 결과 문자열에서 발견 된 핵심 단어가에 나타나는 것과 충돌 할 때 적용됩니다.키워드배열. 따라서 프로그래머는 토토 결과 문자열에서 가져온 값에 의해 배열 항목이 재정의 할 수 있는지 또는 재정의 할 수 있는지 결정할 수 있습니다. 확장 전에 나타나는 배열 항목dbnameConnection String의 필드에 의해 입력을 무효화 할 수 있으며, 그 결과 그 필드는 이후에 나타나는 배열 항목에 의해 무시됩니다.dbname(그러나 그 항목이 비어 있지 않은 값을 공급하는 경우에만).

모든 배열 항목과 확장 된 토토 결과 문자열을 처리 한 후에는 UNSET를 유지하는 연결 매개 변수는 기본값으로 채워집니다. UNSET 매개 변수의 해당 환경 변수 인 경우 (참조PostgreSQL : 문서 : 10 : 33.14. 환경 와이즈 토토)가 설정되어 있고 그 값이 사용됩니다. 환경 변수가 설정되지 않으면 매개 변수의 내장 기본값이 사용됩니다.

PQCONNECTDB

데이터베이스 서버에 새로운 토토 결과을합니다.

pgconn *pqconnectdb (const char *conninfo);

이 기능은 문자열에서 가져온 매개 변수를 사용하여 새 데이터베이스 토토 결과을 엽니 다Conninfo.

전달 된 문자열은 모든 기본 매개 변수를 사용하기 위해 비어 있거나 Whitespace로 분리 된 하나 이상의 매개 변수 설정을 포함하거나 A를 포함 할 수 있습니다uri. 보다섹션 33.1.1자세한 내용.

pqsetdblogin

데이터베이스 서버에 새로운 토토 결과을합니다.

pgconn *pqsetdblogin (const char *pghost,
                     const char *pgport,
                     const char *pgoptions,
                     const char *pgtty,
                     const char *dbname,
                     const char *로그인,
                     const char *pwd);

이것은의 전임자입니다.pqconnectdb고정 된 매개 변수 세트가 포함되어 있습니다. 누락 된 매개 변수가 항상 기본값을 사용한다는 점을 제외하고는 동일한 기능이 있습니다. 쓰다NULL또는 기본적으로 고정 될 고정 된 매개 변수 중 하나에 대한 빈 문자열.

dbname포함=서명 또는 유효한 연결uri접두사, A로 간주됩니다.Conninfo통과 된 것과 정확히 같은 방식으로 문자열pqconnectdb, 나머지 매개 변수는 지정된대로 적용됩니다.PQCONNECTDBPARAMS.

PQSETDB

데이터베이스 서버에 새로운 토토 결과을합니다.

pgconn *pqsetdb (char *pghost,
                char *pgport,
                char *pgoptions,
                char *pgtty,
                char *dbname);

이것은 호출하는 매크로입니다pqsetdblogin로그인andPWD매개 변수. 아주 오래된 프로그램과의 역 호환성을 위해 제공됩니다.

PQConnectStartParams
PQConnectStart
pqconnectpoll

블로킹하지 않은 방식으로 데이터베이스 서버에 토토 결과합니다.

PGCONN *PQCONNECTSTARTPARAMS (const char *const *키워드,
                             const char * const * 값,
                             int expand_dbname);

pgconn *pqconnectstart (const char *conninfo);

postgrespollingstatustype pqconnectpoll (pgconn *conn);

이 세 가지 함수는 데이터베이스 서버에 토토 결과을 열어 응용 프로그램의 실행 스레드가 원격 I/O에서 차단되지 않도록 사용됩니다. 이 접근법의 요점은 I/O가 완료 될 대기가 응용 프로그램의 기본 루프에서 내부가 아닌 내부가 아닌 내부에서 발생할 수 있다는 것입니다.PQCONNECTDBPARAMS또는PQCONNECTDB, 따라서 응용 프로그램은 다른 활동과 병렬 로이 작업을 관리 할 수 있습니다.

withPQConnectStartParams, 데이터베이스 토토 결과은에서 가져온 매개 변수를 사용하여 이루어집니다.키워드배열 및 제어expand_dbname, 위에서 설명한대로PQCONNECTDBPARAMS.

withPQConnectStart, 데이터베이스 토토 결과은 문자열에서 가져온 매개 변수를 사용하여 만들어집니다Conninfo위에서 설명한대로pqconnectdb.

아니PQConnectStartParamsNORPQConnectStartNORpqconnectpoll여러 제한 사항이 충족되는 한 차단됩니다.

  • thehostaddr매개 변수는 DNS 쿼리가 이루어지지 않도록 적절하게 사용해야합니다. 이 매개 변수의 문서를 참조하십시오.섹션 33.1.2자세한 내용.

  • 전화하면pqtrace, 추적하는 스트림 객체가 차단되지 않도록하십시오.

  • 전화하기 전에 소켓이 적절한 상태에 있는지 확인해야합니다PQConnectPoll, 아래 설명 된대로.

블로킹되지 않은 토토 결과 요청을 시작하려면 전화PQConnectStart또는PQConnectStartParams. 결과가 null이면libpq새로운 것을 할당 할 수 없었습니다pgconn구조. 그렇지 않으면 유효한pgconn포인터가 반환되었습니다 (아직 데이터베이스에 대한 유효한 연결을 나타내지는 않지만). 다음 호출pqstatus (conn). 결과가 인 경우Connection_Bad, 일반적으로 유효하지 않은 토토 결과 매개 변수로 인해 토토 결과 시도가 이미 실패했습니다.

ifPQConnectStart또는PQConnectStartParams성공, 다음 단계는 투표하는 것입니다libpq토토 결과 순서를 진행할 수 있도록. 사용pqsocket (conn)데이터베이스 토토 결과 기본 소켓의 설명자를 얻으려면. (주의 : 소켓이 동일하게 남아 있다고 가정하지 마십시오pqconnectpoll전화.) 루프 : ifpqconnectpoll (conn)마지막 반품pgres_polling_reading, 소켓이 읽을 준비가 될 때까지 기다리십시오 (select (), poll ()또는 유사한 시스템 기능). 그런 다음 호출pqconnectpoll (conn)다시. 반대로, ifpqconnectpoll (conn)마지막 반품pgres_polling_writing, 소켓이 쓸 준비가 될 때까지 기다렸다가 전화pqconnectpoll (conn)다시. 첫 번째 반복에서, 즉 아직 전화하지 않은 경우pqconnectpoll, 마지막으로 반환 된 것처럼 행동pgres_polling_writing. 이 루프를 계속할 때까지PQConnectPoll (Conn)반환pgres_polling_failed, 토토 결과 절차가 실패했음을 나타내거나pgres_polling_ok, 토토 결과이 성공적으로 이루어 졌음을 나타냅니다.

연결하는 동안 언제든지 연결 상태를 호출하여 확인할 수 있습니다PQSTATUS. 이 호출이 반환되는 경우Connection_Bad, 연결 절차가 실패했습니다. 통화가 반환되는 경우Connection_ok, 연결이 준비되었습니다. 이 두 상태는의 반환 값에서 똑같이 감지 할 수 있습니다.pqconnectpoll, 위에서 설명한. 다른 상태는 또한 비동기 연결 절차 중에 발생할 수 있습니다. 이는 연결 절차의 현재 단계를 나타내며 예를 들어 사용자에게 피드백을 제공하는 데 유용 할 수 있습니다. 이 상태는 다음과 같습니다.

Connection_started

토토 결과이 이루어지기를 기다리고 있습니다.

Connection_Made

토토 결과 확인; 보내기를 기다리고 있습니다.

Connection_awaiting_Response

서버에서 응답을 기다리고 있습니다.

Connection_auth_ok

인증을 받았습니다. 백엔드 스타트 업을 기다리고 있습니다.

Connection_SSL_STARTUP

SSL 암호화 협상.

Connection_Setenv

환경 중심 매개 변수 설정 협상.

Connection_check_writable

토토 결과이 트랜잭션 쓰기를 처리 할 수 있는지 확인합니다.

Connection_Consume

토토 결과에 나머지 응답 메시지 소비.

이러한 상수는 (호환성을 유지하기 위해)이 상수가 유지되지만 응용 프로그램은 특정 순서 또는 전혀 또는 상태가 항상 문서화 된 값 중 하나 인 상태에 의존해서는 안됩니다. 응용 프로그램은 다음과 같은 일을 할 수 있습니다.

스위치 (pqstatus (conn))

        Case Connection_Started :
            피드백 = "연결 ...";
            부서지다;

        Case Connection_Made :
            피드백 = "서버에 연결되어 ...";
            부서지다;
.
.
.
        기본:
            피드백 = "연결 ...";

theConnect_Timeout사용 할 때 토토 결과 매개 변수가 무시됩니다pqconnectpoll; 과도한 시간이 경과했는지 여부를 결정하는 것은 응용 프로그램의 책임입니다. 그렇지 않으면,PQConnectStart뒤 따르는pqconnectpoll루프는에 해당합니다.PQCONNECTDB.

PQConnectStart또는PQConnectStartParams널이 아닌 포인터를 반환하면 전화해야합니다pqfinish구조 및 관련 메모리 블록을 처리하기 위해 완료되면. 토토 결과 시도가 실패하거나 포기하더라도 수행해야합니다.

pqconndefaults

기본 연결 옵션을 반환합니다.

pqconninfooption *pqconndefaults (void);

typedef struct

    char *키워드;   / * 옵션 키워드 */
    char *envvar;    / * 폴백 환경 변수 이름 */
    char *편집;  / * 기본값으로 컴파일 된 폴백 */
    char *val;       / * 옵션의 현재 값 또는 null */
    숯 *레이블;     / * 연결 대화 상자에서 필드에 대한 레이블 */
    char *dispchar;  /*이 필드를 표시하는 방법을 나타냅니다
                          연결 대화 상자에서. 값은 다음과 같습니다.
                          ""디스플레이가 그대로 입력되었습니다
                          "*"비밀번호 필드 - 값 숨기기
                          "D"디버그 옵션 - 기본적으로 표시하지 마십시오 */
    int dispsize;  / * 대화 상자의 문자의 필드 크기 */
 pqconninfooption;

연결 옵션 배열을 반환합니다. 이것은 가능한 모든 것을 결정하는 데 사용할 수 있습니다PQCONNECTDB옵션 및 현재 기본값 값. 반환 값은 배열을 가리 킵니다pqconninfooption구조.키워드포인터. 메모리를 할당 할 수없는 경우 널 포인터가 반환됩니다. 현재 기본값 값 (val필드)는 환경 변수 및 기타 컨텍스트에 따라 다릅니다. 누락되거나 잘못된 서비스 파일은 조용히 무시됩니다. 발신자는 연결 옵션 데이터를 읽기 전용으로 처리해야합니다.

옵션 배열을 처리 한 후 옵션을 전달하여PQCONNINFOFREE. 이 작업이 완료되지 않으면 각 호출마다 소량의 메모리가 유출됩니다pqconndefaults.

PQCONNINFO

라이브 연결이 사용하는 연결 옵션을 반환합니다.

pqconninfooption *pqconninfo (pgconn *conn);

연결 옵션 배열을 반환합니다. 이것은 가능한 모든 것을 결정하는 데 사용할 수 있습니다PQCONNECTDB옵션 및 서버에 연결하는 데 사용 된 값. 반환 값은 배열을 가리 킵니다pqconninfooption구조.키워드포인터. 위의 모든 노트pqconndefaults또한 결과에 적용PQCONNINFO.

PQCONNINFOPARSE

제공된 토토 결과 문자열에서 구문 분석 옵션을 반환합니다.

pqconninfooption *pqconninfoparse (const char *conninfo, char ** errmsg);

토토 결과 문자열을 구문 분석하고 결과 옵션을 배열로 반환합니다. 또는 반환NULL토토 결과 문자열에 문제가있는 경우. 이 기능은를 추출하는 데 사용될 수 있습니다.pqconnectdb제공된 토토 결과 문자열의 옵션. 반환 값은 배열을 가리 킵니다pqconninfooption구조.키워드포인터.

모든 법적 옵션이 결과 배열에 존재하지만pqconninfooption토토 결과 문자열에 존재하지 않는 옵션의 경우val설정NULL; 기본값은 삽입되지 않습니다.

iferrmsgNULL,*errmsgnull성공에, 그렇지 않으면Malloc'D 오류 문자열 문제를 설명합니다. (또한 가능합니다*errmsgNULL그리고 반환 할 함수NULL; 이것은 메모리 외 상태를 나타냅니다.)

옵션 배열을 처리 한 후 옵션을 전달하여PQCONNINFOFREE. 이 작업이 완료되지 않으면 각 호출마다 일부 메모리가 유출됩니다PQCONNINFOPARSE. 반대로 오류가 발생하면errmsgNULL,를 사용하여 오류 문자열을 제거하십시오PQFREEMEM.

pqfinish

서버 토토 결과을 닫습니다. 또한에 사용 된 메모리를 해방합니다.pgconn개체.

void pqfinish (pgconn *conn);

서버 토토 결과 시도가 실패하더라도 (PQSTATUS), 응용 프로그램은 전화해야합니다pqfinishpgconn개체. 그만큼pgconn포인터는 다시 사용해서는 안됩니다pqfinish호출.

pqreset

통신 채널을 서버로 재설정합니다.

void pqreset (pgconn *conn);

이 기능은 서버에 대한 연결을 닫고 이전에 사용한 모든 매개 변수를 사용하여 새로운 연결을 설정하려고 시도합니다. 작업 연결이 손실되면 오류 복구에 유용 할 수 있습니다.

PQRESETSTART
PQRESETPOLL

블로킹하지 않은 방식으로 통신 채널을 서버로 재설정하십시오.

int pqresetstart (pgconn *conn);

postgrespollingstatustype pqresetpoll (pgconn *conn);

이러한 기능은 서버에 대한 연결을 닫고 이전에 사용한 동일한 매개 변수를 사용하여 새 연결을 설정하려고 시도합니다. 작업 연결이 손실되면 오류 복구에 유용 할 수 있습니다. 그들은 다릅니다pqreset(위) 비 블로킹 방식으로 작용한다는 점에서. 이러한 기능은와 동일한 제한을 겪습니다.PQConnectStartParams, PQConnectStartpqconnectpoll.

연결 재설정을 시작하려면 CallPQRESETSTART. 0을 반환하면 재설정이 실패했습니다. 1을 반환하면를 사용하여 재설정을 폴링합니다pqresetpoll|PQConnectPoll.

pqpingparams

pqpingparams서버의 상태를보고합니다. 토토 결과 매개 변수를 동일한 토토 결과 매개 변수와 동일하게 허용합니다.PQCONNECTDBPARAMS, 위에서 설명합니다. 서버 상태를 얻기 위해 올바른 사용자 이름, 암호 또는 데이터베이스 이름 값을 제공 할 필요는 없습니다. 그러나 잘못된 값이 제공되면 서버는 실패한 연결 시도를 기록합니다.

pgping pqpingparams (const char * const * 키워드,
                    const char * const * 값,
                    int expand_dbname);

함수는 다음 값 중 하나를 반환합니다.

pqping_ok

서버가 실행 중이며 토토 결과을 수락하는 것으로 보입니다.

pqping_reject

서버가 실행 중이지만 연결을 방해하는 상태 (시작, 종료 또는 충돌 복구).

pqping_no_response

서버에 연락 할 수 없습니다. 이는 서버가 실행되지 않았거나 주어진 토토 결과 매개 변수 (예 : 잘못된 포트 번호)에 문제가 있거나 네트워크 토토 결과 문제 (예 : 토토 결과 요청을 차단하는 방화벽)가 있음을 나타냅니다..

pqping_no_attemp

제공된 매개 변수가 분명히 부정확하거나 클라이언트 측 문제가 있었기 때문에 서버에 연락하려는 시도가 없었습니다 (예 : 메모리에서)..

pqping

pqping서버의 상태를보고합니다. 토토 결과 매개 변수를 동일한 토토 결과 매개 변수와 동일하게 허용합니다.PQCONNECTDB, 위에서 설명합니다. 서버 상태를 얻기 위해 올바른 사용자 이름, 암호 또는 데이터베이스 이름 값을 제공 할 필요는 없습니다. 그러나 잘못된 값이 제공되면 서버는 실패한 연결 시도를 기록합니다.

pgping pqping (const char *conninfo);

반환 값은와 동일합니다pqpingparams.

33.1.1. 토토 결과 문자열

libpq함수는 사용자 지정 문자열을 구문 분석하여 연결 매개 변수를 얻습니다. 이 문자열에는 2 개의 허용 형식이 있습니다 : 일반 키워드/가치 문자열 및 URI. Uris는 일반적으로 다음RFC 3986-다중 호스트 토토 결과 문자열은 아래에 설명 된대로 허용됩니다.

33.1.1.1. 키워드/가치 토토 결과 문자열

키워드/값 형식에서 각 매개 변수 설정은 양식에 있습니다키워드 = value, 설정 사이에 공간이 있습니다. 설정의 동일한 부호 주변의 공간은 선택 사항입니다. 빈 값 또는 공백이 포함 된 값을 작성하려면 단일 따옴표로 둘러싸여keyword = 'value'. 값 내의 단일 따옴표와 백 슬래시는 백 슬래시로 탈출해야합니다.\ 'and\\.

예 :

host = localhost port = 5432 dbname = mydb connect_timeout = 10

인식 된 매개 변수 키워드는에 나열되어 있습니다.섹션 33.1.2.

33.1.1.2. 연결 uris

토토 결과을위한 일반 양식uriIS :

postgresql : // [userspec@] [Hostspec] [/dbname] [?Paramspec]여기서userspecIS :

사용자[:비밀번호]andHostspecIS :[host] [:포트] [,...]ParamspecIS :

이름=value[& ...]

theuri체계 지정자가 될 수 있습니다postgresql : //또는Postgres : //. 나머지 각각uri부품은 선택 사항입니다. 다음 예제는 유효 함을 보여줍니다uri구문 :

postgresql : //
postgresql : // localhost
postgresql : // localhost : 5433
postgresql : // localhost/mydb
postgresql : // user@localhost
postgresql : // user : secret@localhost
postgresql : // other@localhost/otherdb? connect_timeout = 10 & application_name = myapp
postgresql : // host1 : 123, host2 : 456/somedb? target_session_attrs = any & application_name = myapp

일반적으로uri대안으로 이름이 지정된 매개 변수로 제공 될 수 있습니다. 예를 들어:

postgresql : // mydb? host = localhost & port = 5433

모든 이름의 매개 변수는 나열된 키어 일치해야합니다섹션 33.1.2, JDBC 토토 결과과의 호환성을 제외하고uris, 인스턴스ssl = truesslmode = require.

퍼센트 인코딩은 모든 것에 특별한 의미를 가진 기호를 포함하는 데 사용될 수 있습니다uri부품, 예 : 교체=with%3D.

호스트 부분은 호스트 이름 또는 IP 주소 일 수 있습니다. IPv6 주소를 지정하려면 정사각형 괄호 안에 둘러싸여 있습니다.

postgresql : // [2001 : db8 :: 1234]/database

호스트 부분은 매개 변수에 대해 설명 된대로 해석됩니다호스트. 특히, 호스트 부품이 비어 있거나 절대 경로 이름처럼 보이는 경우 Unix-Domain 소켓 연결이 선택됩니다. 그렇지 않으면 TCP/IP 연결이 시작됩니다. 그러나 슬래시는 URI의 계층 적 부분에서 예약 된 문자입니다. 따라서 비표준 UNIX- 도메인 소켓 디렉토리를 지정하려면 URI의 호스트 부분을 생략하고 호스트를 명명 된 매개 변수로 지정하거나 URI의 호스트 부분의 경로를 비율로 지정하십시오.

postgresql : // dbname? host =/var/lib/postgresql
postgresql : //%2fvar%2flib%2fpostgresql/dbname

단일 URI에서 각각 옵션 포트 구성 요소가있는 여러 호스트 구성 요소를 지정할 수 있습니다. 양식의 uripostgresql : // host1 : port1, host2 : port2, host3 : port3/양식의 토토 결과 문자열과 동일합니다host = host1, host2, host3 port = port1, port2, port3. 아래에 설명 된 바와 같이, 각 호스트는 연결이 성공적으로 설정 될 때까지 차례로 시도됩니다.

33.1.1.3. 여러 호스트 지정

연결할 여러 호스트를 지정하여 주어진 순서로 시도 할 수 있습니다. 키워드/값 형식에서host, hostaddr포트옵션은 쉼표로 구분 된 값 목록을 허용합니다. 예를 들어 첫 번째 지정된 각 옵션에 동일한 수의 요소가 제공되어야합니다.hostaddr첫 번째 호스트 이름, 두 번째 호스트에 해당합니다.hostaddr두 번째 호스트 이름 등에 해당합니다. 예외로, 단 하나만포트지정되어 있으며 모든 호스트에 적용됩니다.

토토 결과 URI 형식에서 다중 나열을 나열 할 수 있습니다.호스트 : 포트쉼표로 분리 된 쌍호스트URI의 구성 요소

두 형식의 두 형식에서는 단일 호스트 이름이 여러 네트워크 주소로 변환 될 수 있습니다. 이것의 일반적인 예는 IPv4와 IPv6 주소가 모두있는 호스트입니다.

다중 호스트가 지정되거나 단일 호스트 이름이 여러 주소로 변환되면 모든 호스트와 주소가 성공할 때까지 순서대로 시도됩니다. 호스트에 도달 할 수없는 경우 연결이 실패합니다. 연결이 성공적으로 설정되었지만 인증이 실패하면 목록의 나머지 호스트는 시도되지 않습니다.

비밀번호 파일을 사용하는 경우 호스트에 대해 다른 암호를 가질 수 있습니다. 다른 모든 연결 옵션은 목록의 모든 호스트에 대해 동일합니다. 예를 들어, 다른 호스트에 대해 다른 사용자 이름을 지정할 수 없습니다.

33.1.2. 매개 변수 키워드

현재 인식 된 매개 변수 키워드는 다음과 같습니다.

호스트

연결할 호스트 이름.호스트 이름이 슬래시로 시작하면 TCP/IP 통신 대신 UNIX- 도메인 커뮤니케이션을 지정합니다. 값은 소켓 파일이 저장되는 디렉토리의 이름입니다. 기본 동작host지정되지 않았거나 비어 있지 않으면 유닉스 도메인 소켓에 토토 결과하는 것입니다in/tmp(또는 어떤 소켓 디렉토리가 지정되었는지PostgreSQL건축). Unix-Domain 소켓이없는 기계에서 기본값은에 연결하는 것입니다.LocalHost.

쉼표로 구분 된 호스트 이름 목록도 허용되며,이 경우 목록의 각 호스트 이름이 순서대로 시도됩니다. 목록의 빈 항목은 위에서 설명한대로 기본 동작을 선택합니다. 보다섹션 33.1.1.3자세한 내용.

hostaddr

연결할 호스트의 숫자 IP 주소. 표준 IPv4 주소 형식 (예 :이어야합니다.172.28.40.9. 컴퓨터가 IPv6을 지원하는 경우 해당 주소를 사용할 수도 있습니다. TCP/IP 통신은이 매개 변수에 비어 있지 않은 문자열이 지정 될 때 항상 사용됩니다.

사용hostaddr대신host애플리케이션이 호스트 이름 조회를 피할 수 있도록합니다. 이는 시간 제약 조건이있는 응용 프로그램에서 중요 할 수 있습니다. 그러나 GSSAPI 또는 SSPI 인증 방법 및에 호스트 이름이 필요합니다.verify-fullSSL 인증서 확인. 다음 규칙이 사용됩니다.

  • ifhosthostaddr, 호스트 이름 조회가 발생합니다. (사용시PQConnectPoll, 조회는 발생할 때 발생합니다.pqconnectpoll먼저이 호스트 이름을 고려하면 원인이 될 수 있습니다PQCONNECTPOLL상당한 시간 동안 차단하기 위해.)

  • if49999_50009지정host, 값hostaddr서버 네트워크 주소를 제공합니다. 인증 방법에 호스트 이름이 필요한 경우 연결 시도가 실패합니다.

  • 둘 다hosthostaddr지정되어 있습니다.hostaddr서버 네트워크 주소를 제공합니다. 의 값host인증 방법이 필요하지 않으면 무시됩니다.이 경우 호스트 이름으로 사용됩니다.

인증이 실패 할 가능성이 높습니다host네트워크 주소의 서버 이름이 아닙니다hostaddr. 또한, 둘 다호스트hostaddr지정되어 있습니다.호스트비밀번호 파일에서 연결을 식별하는 데 사용됩니다 (참조토토 커뮤니티 : 문서 : 10 : 33.15. 암호 파일).

쉼표로 구분 된 목록hostaddr값도 허용되며,이 경우 목록의 각 호스트는 순서대로 시도됩니다. 목록의 빈 항목으로 인해 해당 호스트 이름이 사용되거나 비어있는 경우 기본 호스트 이름도 사용됩니다. 보다섹션 33.1.1.3자세한 내용.

호스트 이름 또는 호스트 주소가 없으면libpq로컬 UNIX- 도메인 소켓을 사용하여 연결합니다. 또는 Unix-Domain 소켓이없는 기계에서 연결하려고 시도합니다.LocalHost.

포트

서버 호스트에서 연결할 포트 번호 또는 Unix-Domain 연결을위한 소켓 파일 이름 확장.여러 호스트가에 제공된 경우host또는hostaddr매개 변수,이 매개 변수는 호스트 목록과 동일한 길이의 쉼표로 구분 된 포트 목록을 지정하거나 모든 호스트에 사용할 단일 포트 번호를 지정할 수 있습니다. 빈 문자열 또는 쉼표로 구분 된 목록의 빈 항목은시 설정된 기본 포트 번호를 지정합니다.PostgreSQL건설되었습니다.

dbname

데이터베이스 이름. 기본값은 사용자 이름과 동일합니다. 특정 상황에서 값은 확장 형식에 대해 확인됩니다. 보다섹션 33.1.1그에 대한 자세한 내용은.

사용자

PostgreSQL사용자 이름을 연결할 수 있습니다. 기본값은 응용 프로그램을 실행하는 사용자의 운영 체제 이름과 동일합니다.

비밀번호

서버가 암호 인증을 요구하는 경우 사용할 비밀번호.

Passfile

비밀번호를 저장하는 데 사용되는 파일의 이름을 지정합니다 (참조토토 커뮤니티 : 문서 : 10 : 33.15. 암호 파일). 기본값으로~/.pgpass또는%appdata%\ postgresql \ pgpass.confMicrosoft Windows에서. (이 파일이 존재하지 않으면 오류 가보고되지 않습니다.)

Connect_Timeout

최대 토토 결과 대기, 몇 초 만에 (소수 정수로 쓰기, 예를 들어,10). 0, 음수 또는 지정되지 않은 것은 무기한 대기를 의미합니다. 최소 허용 시간 초과는 2 초이므로 값12. 이 시간 초과는 각 호스트 이름 또는 IP 주소에 별도로 적용됩니다. 예를 들어 두 호스트와를 지정하는 경우Connect_Timeout5, 5 초 이내에 연결되지 않으면 각 호스트가 시간을 초과하므로 연결을 기다리는 총 시간은 최대 10 초가 될 수 있습니다.

client_encoding

이것은를 설정합니다.client_encoding이 연결의 구성 매개 변수. 해당 서버 옵션으로 허용되는 값 외에도 사용할 수 있습니다auto클라이언트의 현재 로케일에서 올바른 인코딩을 결정하려면 (LC_CTYPEUNIX 시스템의 환경 변수).

옵션

Connection Start에서 서버로 보낼 명령 줄 옵션을 지정합니다. 예를 들어, 이것을 설정-C geqo = off세션의 값을 설정합니다geqo매개 변수 toOFF. 이 문자열 내의 공간은 백 슬래시로 탈출하지 않는 한 명령 줄 인수를 분리하는 것으로 간주됩니다 (\); 쓰다\\문자 그대로의 백 슬래시를 나타냅니다. 사용 가능한 옵션에 대한 자세한 설명을 보려면PostgreSQL : 문서 : 10 : 19 장 서버 와이즈 토토.

application_name

값을 지정application_name구성 매개 변수.

fallback_application_name

Application_Name구성 매개 변수. 이 값은 값이 제공되지 않으면 사용됩니다.Application_Name연결 매개 변수 또는를 통해pgappname환경 변수. 폴백 이름을 지정하는 것은 기본 응용 프로그램 이름을 설정하지만 사용자가 재정의 할 수있는 일반 유틸리티 프로그램에서 유용합니다.

Keepalives

클라이언트 측 TCP Keepalives가 사용되는지 여부를 제어합니다. 기본값은 1이지만 의미가 있지만 0으로 변경할 수 있습니다. 이 매개 변수는 Unix-Domain 소켓을 통한 연결에 대해 무시됩니다.

Keepalives_idle

TCP가 서버에 keepalive 메시지를 보내야 할 때의 비 활동 초의 초 수를 제어합니다. 0의 값은 시스템 기본값을 사용합니다. 이 매개 변수는 Unix-Domain 소켓을 통한 연결에 대해 무시되거나 Keepalives가 비활성화 된 경우에 무시됩니다. 그것은 시스템에서만 지원됩니다TCP_KEEPIDLE또는 동등한 소켓 옵션을 사용할 수 있으며 Windows에서 사용할 수 있습니다. 다른 시스템에서는 효과가 없습니다.

Keepalives_Interval

서버에서 인정하지 않는 TCP requalive 메시지를 재전송 해야하는 다음 초 수를 제어합니다. 0의 값은 시스템 기본값을 사용합니다. 이 매개 변수는 Unix-Domain 소켓을 통한 연결에 대해 무시되거나 Keepalives가 비활성화 된 경우에 무시됩니다. 그것은 시스템에서만 지원됩니다TCP_KEEPINTVL또는 동등한 소켓 옵션을 사용할 수 있으며 Windows에서 사용할 수 있습니다. 다른 시스템에서는 효과가 없습니다.

Keepalives_Count

클라이언트의 서버와의 연결이 죽은 것으로 간주되기 전에 손실 될 수있는 TCP 유지 보안의 수를 제어합니다. 0의 값은 시스템 기본값을 사용합니다. 이 매개 변수는 Unix-Domain 소켓을 통한 연결에 대해 무시되거나 Keepalives가 비활성화 된 경우에 무시됩니다. 그것은 시스템에서만 지원됩니다TCP_KEEPCNT또는 동등한 소켓 옵션을 사용할 수 있습니다. 다른 시스템에서는 효과가 없습니다.

tty

무시했습니다 (이전에 서버 디버그 출력을 보내는 위치를 지정했습니다).

sslmode

이 옵션은 보안 우선 순위 여부를 결정합니다SSLTCP/IP 토토 결과은 서버와 협상됩니다. 6 가지 모드가 있습니다 :

비활성화

비 만 시도해보십시오.SSLConnection

허용

먼저 비 시도SSL토토 결과; 그것이 실패하면 시도해보십시오SSLConnection

선호(기본값)

첫 번째 시도SSL토토 결과; 실패하면 비 시도해보십시오.SSLConnection

요구

만 시도SSL토토 결과. 루트 CA 파일이있는 경우 IT와 같은 방식으로 인증서를 확인하십시오.verify-ca지정되었습니다

verify-ca

만 시도SSL토토 결과 및 신뢰할 수있는 인증서에 의해 서버 인증서가 발행되었는지 확인하십시오 (CA)

verify-full

만 시도SSL토토 결과, 신뢰할 수있는 서버 인증서가 발행되는지 확인CA그리고 요청 된 서버 호스트 이름은 인증서에서 이와 일치합니다

참조섹션 33.18이러한 옵션의 작동 방식에 대한 자세한 설명은

sslmodeUNIX 도메인 소켓 통신에 대해 무시됩니다. 만약에postgresql옵션을 사용하여 SSL 지원없이 컴파일됩니다요구, verify-ca또는verify-full옵션 오류가 발생합니다허용선호허용되지만libpq실제로 시도하지 않을 것입니다SSL토토 결과.

요구 사항

이 옵션은에 찬성하여 더 이상 사용되지 않습니다.SSLMODE설정.

1으로 설정된 경우, anSSL서버에 대한 토토 결과이 필요합니다 (이것은 동일합니다sslmode 요구).libpq서버가 수락하지 않으면 토토 결과을 거부합니다.SSL토토 결과. 0으로 설정된 경우 (기본값),libpq서버와 토토 결과 유형을 협상합니다 (sslmode 선호). 이 옵션은 만 사용할 수 있습니다.PostgreSQLSSL 지원으로 컴파일됩니다.

SSLCompression

1 (기본값)으로 설정하면 SSL 연결을 통해 전송 된 데이터가 압축됩니다. 0으로 설정하면 압축이 비활성화됩니다 (필요합니다OpenSSL1.0.0 이상). 이 매개 변수는 SSL이없는 연결이 이루어 지거나 버전 인 경우 무시됩니다.OpenSSL사용 된 것은 그것을 지원하지 않습니다.

압축은 CPU 시간을 사용하지만 네트워크가 병목 현상 인 경우 처리량을 향상시킬 수 있습니다. CPU 성능이 제한 요소 인 경우 압축을 비활성화하면 응답 시간과 처리량이 향상 될 수 있습니다.

SSLCERT

이 매개 변수는 클라이언트 SSL 인증서의 파일 이름을 지정하여 기본값을 대체합니다~/.postgresql/postgresql.crt. 이 매개 변수는 SSL 연결이 이루어지지 않으면 무시됩니다.

sslkey

이 매개 변수는 클라이언트 인증서에 사용되는 비밀 키 위치를 지정합니다. 기본값 대신 사용될 파일 이름을 지정할 수 있습니다~/.postgresql/postgresql.key또는 외부에서 얻은 키를 지정할 수 있습니다엔진(엔진은OpenSSL로드 가능한 모듈). 외부 엔진 사양은 콜론 구분 된 엔진 이름과 엔진 별 키 식별자로 구성되어야합니다. 이 매개 변수는 SSL 연결이 이루어지지 않으면 무시됩니다.

SSLROOTCERT

이 매개 변수는 SSL 인증서를 포함하는 파일의 이름을 지정합니다 (CA) 인증서. 파일이 존재하면 서버의 인증서는이 당국 중 하나가 서명하도록 확인됩니다. 기본값은~/.postgresql/root.crt.

SSLCRL

이 매개 변수는 SSL 서버 인증서 Revocation List (CRL)의 파일 이름을 지정합니다. 이 파일에 나열된 인증서가 존재하는 경우 서버의 인증서를 인증하려고 시도하면서 거부됩니다. 기본값은~/.postgresql/root.crl.

요구 사항

이 매개 변수는 서버의 작동 시스템 사용자 이름을 지정합니다 (예 :요구 사항 = Postgres. Unix-Domain 소켓 연결을 만들 때이 매개 변수가 설정되면 클라이언트는 연결 시작시 서버 프로세스가 지정된 사용자 이름으로 실행되는지 확인합니다. 그렇지 않은 경우 연결에 오류가 발생합니다. 이 매개 변수는 TCP/IP 연결에서 SSL 인증서와 함께 사용 가능한 것과 유사한 서버 인증을 제공하는 데 사용될 수 있습니다. (유닉스 도메인 소켓이있는 경우/tmp또는 다른 공개적으로 쓰기 가능한 위치, 모든 사용자가 서버를 청취 할 수 있습니다. 이 매개 변수를 사용하여 신뢰할 수있는 사용자가 실행하는 서버에 연결되어 있는지 확인하십시오.)이 옵션은의 플랫폼에서만 지원됩니다.피어인증 방법이 구현되었습니다. 보다섹션 20.3.6.

krbsrvname

GSSAPI로 인증 할 때 사용할 Kerberos 서비스 이름. 이는 Kerberos 인증을 위해 서버 구성에 지정된 서비스 이름과 일치해야합니다. (참조섹션 20.3.3.)

gsslib

GSSAPI 인증에 사용할 GSS 라이브러리. 현재 이는 GSSAPI 및 SSPI 지원이 모두 포함 된 Windows 빌드를 제외하고는 무시됩니다. 이 경우로 설정하십시오.GSSAPILIBPQ가 기본 SSPI 대신 인증을 위해 GSSAPI 라이브러리를 사용하게합니다.

서비스

추가 매개 변수에 사용할 서비스 이름. 에서 서비스 이름을 지정합니다pg_service.conf67333_67495PostgreSQL : 문서 : 10 : 33.16. 연결 서비스 스포츠 토토 베트맨.

target_session_attrs

이 매개 변수가 설정된 경우읽기 쓰기쿼리Show Transaction_Read_ONLY성공적인 연결에 따라 전송됩니다. 반환되는 경우on, 연결이 닫힙니다. 토토 결과 문자열에 여러 호스트가 지정된 경우 연결 시도가 실패한 것처럼 나머지 서버는 시도됩니다. 이 매개 변수의 기본값any, 모든 연결을 허용 가능한 것으로 간주합니다.