PostgreSQL 8.4에서 유니 코드 데이터베이스를 어떻게 만듭니 까?


14

기본 옵션으로 postgresql-8.4 패키지를 설치했습니다 . 모든 것이 잘 작동했지만 유니 코드 데이터베이스를 만들 수는 없습니다.

-- This doesn't work
createdb test1 --encoding UNICODE

-- This works
createdb test2

오류 메시지

createdb: database creation failed: ERROR:  new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) 

(afaik) 새 db를 만들기 위해 템플릿을 사용하지 않거나 어떤 이유로 든 기본 "postgres"데이터베이스를 암시 적으로 참조하기 때문에 약간 당혹 스럽습니다.

아니면 .conf파일 의 설정이 누락 되었습니까?

답변:


13

참조하는 template1템플릿은입니다. 다른 템플릿을 지정하지 않으면 암시 적으로 사용됩니다.

가장 빠른 해결 방법은을 template0사용하여 대신 데이터베이스를 작성 하는 것 createdb --template=template0입니다.

보다 합리적인 로케일로 전체 클러스터를 삭제하고 다시 초기화 할 수 있습니다. 운영 체제에서 기본적으로 C 로캘을 사용하도록 설정했을 것입니다. 다음 단계에 따라 데이터베이스 시스템을 다시 초기화 할 수 있습니다.

sudo pg_dropcluster --stop 8.4 main
sudo pg_createcluster --locale=en_US.utf8 --start 8.4 main

물론 원하는 로케일을 사용하십시오.


로케일을 수정하기 위해 클러스터를 삭제하는 것은 내가 찾던 것입니다. 덕분에 :)
wildpeaks

남자, 많은 파고 후, 그것은 너무 찾고 있었다! 다른 어떤 것도 PG가 우분투 로케일로 작동하도록 만들 수 없었습니다. 그러나 UTF8로 클러스터를 다시 만들면 트릭이 발생했습니다. :) 건배!
lucasarruda

을 사용 --locale=C.UTF-8하여 시스템에서 지원되는 로케일을 나열 할 수 있습니다 locale -a.
tricasse

3

클러스터를 만들기 전에 로캘을 구성해야 할 수도 있습니다.

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

나는 그것이 나를 위해 일했다고 생각한다!
alfonx

dpkg-reconfigure에는 sudo가 필요합니다.
Cerin

-1

나는 당신이 의미하는 것 같아요 :

createdb test42 --encoding utf-8

그것은 당신이 원하는 것을해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.