На нашем сервере производственной базы данных postgres есть база данных crd_production, созданная на основе базы данных шаблонов template1
. Между прочим, в системе Ubuntu 12.04 кодировка по умолчанию для баз данных template1 и template0 при первоначальном создании pgcluster имела кодировку по умолчанию LATIN1. Я отбросил template1
db и создал его заново с кодировкой utf-8, как вы можете видеть ниже.
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)
В конце концов мы развернули наше приложение rails (3.2.11) и начали использовать crd_production
db в качестве первичной базы данных. Нет проблем, когда ActiveRecord записывает / читает данные, но когда я пытаюсь запустить любой sql-запрос из командной строки psql
в этой базе данных, возникает следующая ошибка:
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"
В чем может быть проблема? Это проблема с клиентом?