LINUX.ORG.RU

логика работы PostgreSQL


0

1

Здравствуйте!

Имею 1Свскую сборку постгри, работает на CentOS, если это важно. Есть несколько вопросов по функционированию данной замечательной СУБД и косвено взаимодействие ее с 1С сервером. Прошу сильно не плеваться, сам я больше системный администратор, чем специалист по какой то конкретной СУБД или СУБД в общем.

Штука в следующем. Установил сборку постгри с официального сайта, установил с настройками по умолчанию, разрешил подключение по сети, создал нового юзера в PostgreSQL, initdb делал без каких то замысловатых ключей, на момент инициализации дефолтная системная локаль была en_US.UTF-8, в postgresql.conf было:

# These settings are initialized by initdb, but they can be changed.

lc_messages = 'en_EN.UTF-8' # locale for system error message strings

lc_monetary = 'en_EN.UTF-8 # locale for monetary formatting

lc_numeric = 'en_EN.UTF-8' # locale for number formatting

lc_time = 'en_EN.UTF-8' # locale for time formatting

С таким конфигом 1С сервер не заводил новую таблицу ссылаясь на неверные региональны настройки СУБД

Поменял на:

lc_messages = 'ru_RU.UTF-8' # locale for system error message strings

lc_monetary = 'ru_RU.UTF-8 # locale for monetary formatting

lc_numeric = 'ru_RU.UTF-8' # locale for number formatting

lc_time = 'ru_RU.UTF-8' # locale for time formatting

С таким конфигом база создалась, но 1С по прежнему сыпет в работе различные ошибки, ссылаясь на региональные настройки.

В связи с этим вопросы:

1. Я правильно понимаю что лучшим решением будет убить текущие таблицы и сделать заново initdb с ключом ru.utf-8 по умолчанию или есть какие то более гуманные способы ? Каким образом это более правильно сделать? Данных сейчас никаких нужных еще не записано.

2. Что еще можно сделать чтобы больше не наступать на грабли с локалями при работе с СУБД? Сделать дефолотовым создание баз в нужной кодировке и вяжется ли это как то с юзерами postgre?



Последнее исправление: payta (всего исправлений: 1)

1 — это лучший вариант. В Вашей задаче ведь postgresql затачивается под 1С, а не наоборот. Поэтому и собирать его надо с теми настройками, которые рекоммендует 1C.

Если по умолчанию стоит нужна локаль (в postgresql.conf), то проблем вроде быть не должно. Правда некоторые приложения требуют в явном виде указывать, что идет работа именно в utf8 (типа переменных pg_utf8_enable=1 в DBI в перле).

PS: обязательно отредактируйте файл postgresql.conf там настройки по умолчанию такие, чтобы постгрес запустился на любой машине, соотв. по умолчанию тормоза будут дикие.

soomrack ★★★★★
()

п.1 стереть base и по новой initdb

mumpster ★★★★★
()

Можно пересоздать базу снова
LC_ALL=ru_RU.UTF-8 /etc/init.d/postgresql initdb
Писал по памяти, если что, подкорректируете по месту.
Ещё можно прописать export LANG=ru_RU.UTF-8 в .bashrc в хомяке пользователя postgres
Да и если выставить эту локаль для всей системы ничего плохого не случится.

imul ★★★★★
()
Ответ на: комментарий от soomrack

PS: обязательно отредактируйте файл postgresql.conf там настройки по умолчанию такие, чтобы постгрес запустился на любой машине, соотв. по умолчанию тормоза будут дикие.

Кстати, эксперименты показывали, что настройки у сборки от 1С несколько отличаются от тех, которые гуляют по сети для ванильной постгрески. То есть, настроенная по официальным рекомендациям, она работает весьма плачевно. Зачем так делать понадобилось делать, ума не приложу.

imul ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.