Изменить сортировку базы данных, тип Ctype в Postgresql
как мне изменить Collation, cType - en_IN
от en_US.UTF-8
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
: postgres=CTc/postgres
моя текущая постгрессивная версия - 8.4
ive установил его с помощью
sudo apt-get install postgresql-8.4 postgresql-contrib-8.4
im делать это на моем сервере ubuntu amazon ec2
Ответы
Ответ 1
Моя рекомендация:
Я обнаружил, что иногда бывает возможно создать db с шаблоном шаблона0 (-T template0 из bash или WITH TEMPLATE template0
из psql), чтобы использовать локаль не-init-db.
Ответ 2
Нет необходимости воссоздавать весь кластер базы данных. Однако вам нужно восстановить свою базу данных.
Запустите createb с этими параметрами (man createdb
):
-E encoding, --encoding=encoding
Specifies the character encoding scheme to be used in this
database. The character sets supported by the PostgreSQL server
are described in Section 22.3.1, "Supported Character Sets", in
the documentation.
-l locale, --locale=locale
Specifies the locale to be used in this database. This is
equivalent to specifying both --lc-collate and --lc-ctype.
--lc-collate=locale
Specifies the LC_COLLATE setting to be used in this database.
--lc-ctype=locale
Specifies the LC_CTYPE setting to be used in this database.
Кажется, вы действительно не можете изменить параметры сортировки существующей базы данных:
=> ALTER DATABASE dbname SET "Collate" To Russian;
ERROR: unrecognized configuration parameter "Collate"
Обратите внимание, что вы можете установить параметры сортировки для таблицы или столбца, см. Хороший учебник по параметрам сортировки в PostgreSQL.
Ответ 3
его очень очень простые решения.
Шаг 1. su - postgres Step2. psql Setp3. обновить базу данных pg_database encoding = pg_char_to_encoding ('UTF8') где datname = 'icinga'; (не забудьте добавить;) Шаг 4. чтобы проверить
Ответ 4
Это сработало для меня для моей базы данных DEV. Не пытайтесь сделать это для своей производственной базы данных. Вы можете потерять существующие индексы.
Повторите приведенный ниже запрос для template1
и template0
update pg_database set datcollate='en_IN', datctype='UTF-8' where datname='postgres'