Как мне создать базы данных Unicode в PostgreSQL 8.4?


14

Я установил пакет postgresql-8.4 с параметрами по умолчанию. Все работало нормально, но я не могу создать базы данных Unicode:

-- 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) я не использую шаблон для создания новой базы данных, или он по какой-то причине косвенно ссылается на базу данных postgres по умолчанию?

Или, может быть, мне не хватает настройки в .confфайле?

Ответы:


13

Шаблон, на который он ссылается, это template1, который неявно используется, если вы не указали другой шаблон.

Самый быстрый обходной путь - template0вместо этого вы создаете базу данных , используя createdb --template=template0.

Вы можете удалить и повторно инициализировать весь ваш кластер с более разумным языком. Возможно, ваша операционная система по умолчанию настроена на использование языка Си. Вы можете повторно инициализировать систему базы данных с помощью этих шагов:

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

Конечно, используйте любой язык, который вам нравится.


Исключение кластера для изменения локали было именно тем, что я искал, спасибо :)
wildpeaks

Человек, после долгих копаний, это было то, что тоже искал! Ничто иное не могло заставить PG работать с языком Ubuntu, даже изменить его. Но воссоздание кластера с UTF8 сделало свое дело :). Ура!
lucasarruda

Вы можете использовать --locale=C.UTF-8(перечислите поддерживаемые локали в вашей системе с помощью locale -a).
Трикасс

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-переконфигурировать требует sudo ...
Cerin

-1

Я думаю, что вы имеете в виду:

createdb test42 --encoding utf-8

Это должно делать то, что вы хотите.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.