如何从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
我目前的postgresversion是8.4 我已经使用
安装了它sudo apt-get install postgresql-8.4 postgresql-contrib-8.4
我在我的ubuntu亚马逊服务器ec2
中这样做答案 0 :(得分:9)
我的建议:
采取pg_dumpall
重新初始化数据库集群,确保语言环境信息正确
恢复转储。
我发现有时可能需要使用模板template0(来自bash的-T template0或来自psql的WITH TEMPLATE template0
)创建一个db来使用非init-db语言环境。
答案 1 :(得分:4)
没有必要重新创建整个数据库集群。但是,您需要重新创建数据库。
使用这些选项(man createdb
)运行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中的排序规则上查看好的tutorial。
答案 2 :(得分:1)
我不得不更改为POSIX.UTF-8。我使用以下命令进行管理:
su postgres
psql
\l
update pg_database set datcollate='POSIX.UTF-8', datctype='POSIX.UTF-8' where datname='databasename';
\l
答案 3 :(得分:-1)
这适用于我的DEV数据库。不要为您的生产数据库尝试此操作。您可能会松散现有索引。
重复以下查询template1
& template0
以及
update pg_database set datcollate='en_IN', datctype='UTF-8' where datname='postgres'
答案 4 :(得分:-1)
非常简单的解决方案。
步骤1。 su-postgres 第2步。 psql Setp3。更新pg_database设置编码= pg_char_to_encoding('UTF8')其中datname ='icinga'; (不要忘记添加;) 步骤4。 \ l检查