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