Postgres 将编码 SQL_ASCII 更改为 UTF8

Postgres change Encoding SQL_ASCII to UTF8

我想在不删除数据库的情况下将数据库编码 sql ascii 更改为 utf8 可能吗? (psql 9.5) (我怕数据中断)

我正在尝试这个但不起作用

 update pg_database set encoding = pg_char_to_encoding('utf8') where datname = 'name'

您不一定 drop 数据库。但是,您将需要使用新编码有效地创建另一个编码,因此在不中断数据的情况下确实不可能更改编码。

一般来说,首选的方法是使用pg_dump转储当前数据库,新建一个utf8编码的数据库,然后做一个pg_restore 到那个数据库。

但是,在此过程中,您可能会发现必须解决一些与数据相关的问题才能使 pg_restore 不会失败,因为 [=24] 中可以存储很多东西=] 数据库(尽管它的名字实际上没有任何编码——它基本上只接受字节)不是有效的 UTF8。