2011-05-10 4 views
3

postgres에서 다른 인코딩으로 데이터베이스를 만들려고했으나 (데이터베이스 관리자로 PgAdmin을 사용하고 있습니다), UTF8이 아닌 인코딩으로 데이터베이스를 만들려고 할 때 PgAdmin이 다음과 같은 오류 메시지를 표시합니다. 현재 로케일 "Portuguese_Brazil_1252"와 일치하지 않으며 LC_Ctype 구성에 "WIN1252"인코딩이 필요하므로 데이터베이스를 만들 수 없습니다.다른 인코딩을 사용하는 Postgres 데이터베이스

어떻게 PostGres에서 설정합니까? Windows XP (내 선택이 아님)가있는 로켈 테스트 서버에서 실행 중입니다. 다른 인코딩으로 데이터베이스를 만들 수 있습니까? 아니면 PostGres의 제한 사항입니까? 여기 누구든지 이미 성공을 관리 했습니까?

감사

docs에서
+0

read here는 당신이 우리를 정확히 알 수 있습니다 (SQL 형식의 명령을 CREATE SQL의 PgAdmin에서 사용 가능 탭) 및 정확한 오류 메시지? – leonbloy

+0

그냥'CREATE DATABASE test ENCODING 'latin1'; ' – marcio

+2

오류 메시지 :'오류 : 인코딩 LATIN1이 서버의 로케일과 일치하지 않습니다. Portuguese_Brazil_1252 상세 정보 : 서버의 LC_CTYPE 설정이 WIN1252를 인코딩해야합니다 .' – marcio

답변

8

:

The character set encoding specified for the new database must be compatible with the chosen locale settings (LC_COLLATE and LC_CTYPE). If the locale is C (or equivalently POSIX), then all encodings are allowed, but for other locale settings there is only one encoding that will work properly. [...]

The encoding and locale settings must match those of the template database, except when template0 is used as template.

당신은 당신의 중 하나에 의해 데이터베이스 (또는 둘 다) 만드는 데 사용할 수 있어야합니다 :

  • 이 템플릿으로 template0 지정을 (기본 템플릿 대신 1)

  • 올바른 LC_COLLATE을 지정

  • 올바른 LC_CTYPE = 지정 (LC_COLLATE = 'C'를 사용하려고)

당신은 이러한 설정을 추가해야합니다 (LC_CTYPE도 = 'C'를 사용하려고)하여 CREATE 문 (그리고 PgAdmin는 기본 폼 창에서 작업을 수행 할 수 있습니다)

당신이 template0/template1를에 대해 알고 알고 싶어하지 않는 경우,

+0

Windows에서 PostGres를 구성하지 않음) 설치 도중 Posix 호환 옵션을 선택하여 PostGres를 다시 설치했습니다. 그 점을 명확히 해 주셔서 감사합니다. – marcio

관련 문제