Después de una actualización de Ubuntu Server 14.04 a 16.04, también tuve que actualizar mis clústeres de Postgres de 9.3 a 9.5. La forma normal de hacerlo es descartar primero el clúster 9.5 (vacío) que creó la actualización:
# pg_dropcluster 9.5 principal
y luego para actualizar el antiguo clúster 9.3 a 9.5:
# pg_upgradecluster 9.3 principal
Sin embargo, esto da como resultado un error:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = (unset),
LC_PAPER = "nl_NL.UTF-8",
LC_ADDRESS = "nl_NL.UTF-8",
LC_MONETARY = "nl_NL.UTF-8",
LC_NUMERIC = "nl_NL.UTF-8",
LC_TELEPHONE = "nl_NL.UTF-8",
LC_IDENTIFICATION = "nl_NL.UTF-8",
LC_MEASUREMENT = "nl_NL.UTF-8",
LC_TIME = "nl_NL.UTF-8",
LC_NAME = "nl_NL.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
Error: The locale requested by the environment is invalid.
Error: Could not create target cluster
Esto significa que no pude actualizar a Postgres 9.5.
Revisé todas las configuraciones regionales:
- la configuración regional en_US.UTF-8 existe y se genera correctamente como se verifica con la configuración regional -a (muestra en_US.utf8 en su lista)
- El archivo /etc/environment contiene LC_ALL=en_US.UTF-8 y LANG=en_US.UTF-8
- /etc/default/locale contiene la misma configuración para LANG, LANGUAGE y LC_ALL
- Puedo iniciar Perl sin ningún problema usando “perl -e exit”
El mensaje de error se genera a partir del script pg_createcluster al que se llama desde pg_updatecluster. Pero ejecutar pg_createcluster desde la línea de comando funciona bien, sin ningún problema.
Solución para el problema:
Utilicé la siguiente solución para al menos hacer que la conversión funcionara. Edité el script /usr/bin/pg_upgradecluster de la siguiente manera:
- Encuentre el código donde llama a pg_createcluster buscando el comentario “crear nuevo clúster”
- Ese código consiste en una serie de declaraciones “push”, que terminan en la línea sospechosa: delete $ENV{‘LC_ALL’}
- Observe que este LC_ALL es exactamente la variable que no está configurada en el mensaje de error.
- Comente ese comentario eliminado agregando un ‘#’ antes de él, luego guárdelo.
Esto al menos evita este problema y le permite ejecutar la actualización.
Mi pregunta: ¿se trata de un error en la secuencia de comandos pg_upgradecluster, o hay algo más mal en mi sistema?
tenía el mismo problema en un servidor ubuntu 16.04. lo que ayudó en mi caso fue generar todos las localidades que aparecen en su lista de $ locale
:
$ sudo locale-gen "en_US.UTF-8"
$ sudo locale-gen "nl_NL.UTF-8"
¡buena suerte!
En mi caso, se quejó de
Error: The locale requested by the environment is invalid:
LANG: en_GB
LANGUAGE: en_GB:en
Asique unset LANG
y unset LANGUAGE
Y funcionó.
-
Esto funcionó para mí, pero tuve que agregar un comando adicional: establecer LC_CTYPE = “en_US.UTF-8”
– negrotico19
2 de agosto a las 2:30
Para mí, he seguido muchas sugerencias y todavía no funcionó. El guión mencionado
LC_TIME=en_UK
pero no tiene ninguna relación, así que lo ignoré al principio. Resulta que este era el problema y hacer “unset LC_TIME” era todo lo que necesitaba.
Pongo aquí por si le ha pasado a alguien más.
Mi forma rápida de desactivar ese mensaje: (macOS 12 Monterey M1)
Abra Terminal -> Preferencias -> pestaña Avanzado -> desmarque Establecer variables de entorno locales al inicio
Acabo de encontrar esto en una nueva instalación de Ubuntu + PostgresQL, después de todos esos años… de cualquier manera, la solución es:
apt-get install locales
Artículo relacionado: stackoverflow.com/questions/49089099/…
– Khoi Ngo
6 abr a las 10:01