utf8 template postgres lc_collate encoding_name change cambiar postgresql encoding latin1

postgresql - template - El problema de Postgres que codifica “UTF8” no tiene equivalente en la codificación de “LATIN1”



set database encoding postgresql (2)

Como se adivinó, el problema era con la codificación de cliente en la base de datos.

crd_production=# show client_encoding; client_encoding ----------------- LATIN1 (1 row)

Para cambiar la codificación del cliente a UTF-8, debe hacer esto

crd_production=# SET client_encoding = ''UTF8''; SET

Revisar otra vez

crd_production=# show client_encoding; client_encoding ----------------- UTF8 (1 row)

Las cosas funcionan bien ahora.

Nuestro servidor de base de datos de producción de postgres tiene una base de datos llamada crd_production que nace de la base de datos de template1 template1. Por cierto, en un cuadro de Ubuntu 12.04, la codificación predeterminada de las bases de datos template1 y template0 en la creación inicial del pgcluster tenía una codificación predeterminada de LATIN1. Había eliminado la template1 db y la había creado de nuevo con una codificación utf-8 como se puede ver a continuación.

Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------+----------+----------+------------+------------+----------------------- crd_production | deployer | UTF8 | en_US.utf8 | en_US.utf8 | postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | template0 | postgres | LATIN1 | en_US | en_US | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | (4 rows)

Eventualmente implementamos nuestra aplicación Rails (3.2.11) y comenzamos a usar la base de datos crd_production como la base de datos principal. No hay ningún problema cuando ActiveRecord está escribiendo / leyendo datos, pero cuando intento disparar cualquier consulta de SQL desde la línea de comando psql en esta db, ocurre el siguiente error:

crd_production=# select * from users; ERROR: character with byte sequence 0xe2 0x80 0x9c in encoding "UTF8" has no equivalent in encoding "LATIN1" crd_production=# select * from features; ERROR: character with byte sequence 0xe2 0x80 0x99 in encoding "UTF8" has no equivalent in encoding "LATIN1"

Cual podría ser el problema aquí? ¿Es un problema con el cliente?