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

기본 옵션으로 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파일 의 설정이 누락 되었습니까?



답변

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

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

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

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

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


답변

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

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

답변

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

createdb test42 --encoding utf-8

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