Я установил 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) я не использую шаблон для создания нового дб, или это implicitely, относящийся к базе данных "пост-ГРЭС" по умолчанию по некоторым причинам?
Или возможно я пропускаю установку в a .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
Используйте любую локаль, которую Вы любите, конечно.
Я думаю, что Вы имеете в виду:
createdb test42 --encoding utf-8
Это должно сделать то, что Вы хотите.
возможно, Вы должны настроить локаль прежде для создания кластера
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