Jak utworzyć bazy danych Unicode w PostgreSQL 8.4?


14

Zainstalowałem pakiet postgresql-8.4 z domyślnymi opcjami. Wszystko działało dobrze, ale nie wydaje mi się, aby udało mi się stworzyć bazy danych Unicode:

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

-- This works
createdb test2

Komunikat o błędzie,

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

jest trochę zastanawiające, ponieważ (afaik) Nie używam szablonu do tworzenia nowej bazy danych, czy z jakiegoś powodu domyślnie odnosi się do domyślnej bazy danych „postgres”?

A może brakuje mi ustawienia w .confpliku?

Odpowiedzi:


13

Szablon, do którego się odnosi template1, jest domyślnie używany, jeśli nie określisz innego szablonu.

Najszybszym obejściem tego problemu jest utworzenie bazy danych template0za pomocą createdb --template=template0.

Możesz upuścić i ponownie zainicjować cały klaster za pomocą bardziej rozsądnych ustawień regionalnych. Prawdopodobnie system operacyjny jest ustawiony tak, aby domyślnie korzystał z ustawień regionalnych C. Możesz ponownie zainicjować system bazy danych, wykonując następujące czynności:

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

Oczywiście używaj dowolnych ustawień regionalnych.


Upuszczenie klastra w celu zmodyfikowania ustawień
narodowych

Człowieku, po wielu kopaniach, tego też szukał! Nic innego nie sprawi, że PG będzie działać z ustawieniami regionalnymi Ubuntu, a nawet je zmienić. Ale odtworzenie klastra za pomocą UTF8 załatwiło sprawę :). Twoje zdrowie!
lucasarruda,

Możesz użyć --locale=C.UTF-8(wymień obsługiwane ustawienia narodowe w systemie za pomocą locale -a).
tricasse

3

być może musisz skonfigurować ustawienia regionalne przed utworzeniem klastra

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

Myślę, że to zadziałało dla mnie!
alfonx

dpkg-rekonfiguracja wymaga sudo ...
Cerin

-1

Wydaje mi się, że masz na myśli:

createdb test42 --encoding utf-8

To powinno zrobić, co chcesz.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.