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

Чи, можливо, мені не вистачає налаштування у .confфайлі?

Відповіді:


13

Шаблон, на який посилається, є template1, який неявно використовується, якщо ви не вказали інший шаблон.

Найшвидший спосіб вирішити те, що ви створюєте свою базу даних template0замість цього, використовуючи createdb --template=template0.

Можливо, ви захочете відмовитись та повторно інтегрувати весь свій кластер з більш розумним місцем. Напевно, у вас встановлена ​​операційна система для використання локальної мови C за замовчуванням. Ви можете повторно реалізувати систему баз даних за допомогою цих кроків:

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 ...
Керін

-1

Я думаю, ти маєш на увазі:

createdb test42 --encoding utf-8

Це має робити те, що ти хочеш.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.