比如从C
变为utf8
?
我试过这个,但似乎不允许。
postgres=# ALTER DATABASE mydb SET "Collate" To 'en_US.UTF-8';
ERROR: unrecognized configuration parameter "Collate"
比如从C
变为utf8
?
我试过这个,但似乎不允许。
postgres=# ALTER DATABASE mydb SET "Collate" To 'en_US.UTF-8';
ERROR: unrecognized configuration parameter "Collate"
不,那是不可能的。
原因是数据库中可能存在依赖于数据库排序规则的数据结构:字符串数据类型的索引。如果您能够即时更改排序规则,那么所有这些索引都会隐式损坏。
你可能会说没关系,让我们重建所有这些索引。好吧,如果您准备好这样做,有一种方法:
pg_dump
数据库,使用所需的排序规则创建一个新数据库并将转储恢复到新数据库中。当然,这将比仅仅重建字符串索引花费更长的时间,但费用是相同的数量级,这是一种安全的方式。您可能很想
pg_database
手动干预系统目录,但我只能劝阻:俗话说,如果您这样做并且事情破裂,您就可以保留这两部分。