¿Por qué no puedo hacer un & # 8220; upper () & # 8221; en mi base de datos PostgreSQL?

StackOverflow https://stackoverflow.com/questions/454769

  •  19-08-2019
  •  | 
  •  

Pregunta

Creé una base de datos en PostgreSQL con " encoding = 'UTF8' " ;, y cargué algunos datos UTF8 en ella. Seleccionar funciona bien, pero cuando trato de hacer un " WHERE UPPER (name) = 'FOO' " en una consulta, recibo un error

ERROR:  invalid multibyte character for locale

Mi investigación parece indicar que esto se debe a que la instalación de PostgreSQL fue " initdb " -ed con LANG = en_US en lugar de LANG = en_US.UTF8 . Haciendo un " SHOW LC_COLLATE " muestra " en_US " ;. No quiero tener que volcar y recrear todas mis bases de datos, porque varias de ellas son PostGIS y es un verdadero dolor recrearlas. ¿Existe una solución alternativa, como una forma de hacer el equivalente de "SUPERIOR" que funciona para UTF8?

Actualización Terminé haciendo el volcado, reiniciando y restaurando la base de datos, y fue menos doloroso de lo que pensé que sería, excepto por un pequeño problema para averiguar dónde están los datos. se suponía que debía ir porque el usuario de postgres no establece la variable de entorno PGDATA, y tampoco lo hace ningún archivo de configuración o script de shell que pude encontrar.

¿Fue útil?

Solución

No creo que la solución que desee sea factible, pero el volcado y la restauración de sus bases de datos habilitadas para PostGIS deberían funcionar bien. Regularmente vuelco y restauro bases de datos con las funciones y datos de PostGIS con objetos geom.

¿Qué tipo de problemas tienes?

Otros consejos

Su diagnóstico es correcto, es un problema común con Unicode en PostgreSQL. El procedimiento de instalación trató de ser inteligente e iniciado con la configuración regional del shell que lo ejecuta :-(

Sugiero que, si no puede volcar y restaurar su base de datos, tiene un problema más grave y más urgente que el uso de mayúsculas y minúsculas. En mi humilde opinión, primero debe abordar este problema, antes de tener que restaurar sus datos después de que se emitió una nueva versión de PostgreSQL (o después de una falla en el disco duro).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top