Solución:
Mi recomendación:
-
toma un pg_dumpall
-
reinicialice el clúster de base de datos, asegurándose de que la información de la configuración regional sea correcta
-
restaurar su vertedero.
He descubierto que a veces es posible que uno tenga que crear una base de datos con plantilla template0 (-T template0 de bash o WITH TEMPLATE template0
desde psql) para usar una configuración regional que no sea init-db.
No es necesario volver a crear todo el clúster de la base de datos. Sin embargo, debe volver a crear su base de datos.
Ejecute createdb con estas opciones (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.
Parece que realmente no puede cambiar la intercalación de una base de datos existente:
=> ALTER DATABASE dbname SET "Collate" To Russian;
ERROR: unrecognized configuration parameter "Collate"
Tenga en cuenta que puede establecer la intercalación para una tabla o columna; consulte un buen tutorial sobre intercalaciones en PostgreSQL.
Tuve que cambiarme a POSIX.UTF-8. Lo logré con los siguientes comandos:
su postgres
psql
l
update pg_database set datcollate="POSIX.UTF-8", datctype="POSIX.UTF-8" where datname="databasename";
l