Связка сервера “1С:Підприємство” и PostgreSQL вторая по популярности среди установок “1С:Підприємство” и самое используемое решение на платформе Linux. В отличии внедрений на базе Windows и MSSQL, где трудно сделать так, чтобы не заработало, внедрения на базе Linux таят множество подводных камней для неопытного администратора. Часто бывает так, что вроде бы все сделано правильно, но ошибка следует за ошибкой. Сегодня мы рассмотрим самые типовые из них.
Общая информация
Перед тем, как начинать искать ошибки установки и, вообще, приступать к внедрению серверной версии “1С:Підприємство” было бы неплохо освежить представление как это работает:
Сервер “1С:Підприємство”. Часть 1 – Общие вопросы.
В небольших внедрениях сервер “1С:Підприємство” и сервер СУБД обычно совмещают на одном физическом сервере, что немного сужает круг возможных ошибок. В нашем случае будет рассматриваться ситуация, когда сервера разнесены по разным машинам. В нашей тестовой лаборатории мы развернули следующую схему:
В нашем распоряжении имеются два сервера под управлением Ubuntu 12.04 x64, на одном из них установлен сервер “1С:Підприємство” версии 8.3, на другом PostgreSQL 9.04 от Ethersoft, а также клиент под управлением Windows. Напоминаем, что клиент работает только с сервером “1С:Підприємство”, который, в свою очередь, формирует необходимые запросы к серверу СУБД. Никаких запросов от клиента к серверу управления базами данных не происходит.
Сервер баз данных не обнаружен
ВАЖНО: пользователь “postgres” не прошёл проверку подлинности (Ident)
Данная ошибка возникает при разнесении серверов по разным ПК из-за неправильно настроеной проверки подлинности в локальной сети. Для устранения откройте /var/lib/pgsql/data/pg_hba.conf, найдите строку:
1 |
<span class="hljs-keyword">host</span> <span class="hljs-literal">all</span> <span class="hljs-literal">all</span> <span class="Apple-tab-span"> </span> 192.168.31.0/24 ident |
и приведите ее к виду:
1 |
<span class="hljs-keyword">host</span> <span class="hljs-literal">all</span> <span class="hljs-literal">all</span> <span class="Apple-tab-span"> </span> 192.168.31.0/24<span class="Apple-tab-span"> </span> md5 |
где 192.168.31.0/24 – диапазон вашей локальной сети. Если такой строки нет, ее следует создать в секции IPv4 local connections.
Сервер баз данных не обнаружен
could not translate host name “NAME” to address: Temporary failure in name resolution
На первый взгляд ошибка понятна: клиент не может разрешить имя сервера СУБД, типичная ошибка для небольших сетей, где отсутствует локальный DNS-сервер. В качестве решения добавляют запись в файл hosts на клиенте, что не дает никакого результата…
А теперь вспоминаем, о чем было сказано несколько раньше. Клиентом сервера СУБД является сервер “1С:Підприємство”, но никак не клиентский ПК, следовательно запись нужно добавлять на сервере “1С:Підприємство” в файл /etc/hosts на платформе Linux или в C:\Windows\System32\drivers\etc\hosts на платформе Windows.
Аналогичная ошибка будет возникать, если вы забыли добавить запись типа A для сервера СУБД на локальном DNS-сервере.
Ошибка при выполнении операции с информационной базой
server_addr=NAME descr=11001(0x00002AF9): Этот хост неизвестен.
Как и прошлая, эта ошибка связана с неправильным разрешением клиентом имени сервера. На этот раз именно клиентским ПК. В качестве решения добавляем в файл /etc/hosts на платформе Linux или в C:\Windows\System32\drivers\etc\hosts на платформе Windows запись вида:
1 |
192.168.31.83 SRV-1C-1204 |
где указываете адрес и имя вашего сервера “1С:Підприємство”. В случае использования локального DNS следует добавить A-запись для сервера “1С:Підприємство”.
Ошибка СУБД: DATABASE не пригоден для использования
Гораздо более серьезная ошибка, которая говорит о том, что вы установили несовместимую с “1С:Підприємство” версию PostgreSQL или допустили грубые ошибки при установке, например не установили все необходимые зависимости, в частности библиотеку libICU.
Если вы имеете достаточный опыт администрирования Linux систем, то можете попробовать доустановить необходимые библиотеки и заново инициализировать кластер СУБД. В противном случае PostgreSQL лучше переустановить, не забыв удалить содержимое папки /var/lib/pgsql.
Также данная ошибка может возникать при использовании сборок 9.1.x и 9.2.x Postgre@Etersoft, подробности смотрите ниже.
Ошибка СУБД:
ERROR: could not load library “/usr/lib/x86_64-linux-gnu/postgresql/fasttrun.so”
Довольно специфичная ошибка, характерная для сборок 9.1.x и 9.2.x Postgre@Etersoft, также может приводить предыдущей ошибке. Причина кроется в неисправленной ошибке в библиотеке fasttrun.so. Решение – откатиться на сборку 9.0.x Postgre@Etersoft.
Ошибка СУБД
ERROR: type “mvarchar” does not exist at character 31
Возникает если база данных была создана без помощи системы “1С:Підприємство”. Помните, для работы с “1С:Підприємство” базы данных следует создавать только с использованием инструментов платформы “1С:Підприємство”: через консоль Администрирование серверов “1С:Підприємство”
или через средство запуска “1С:Підприємство”.
Сервер баз данных не обнаружен
ВАЖНО: пользователь “postgres” не прошёл проверку подлинности (по паролю)
Очень простая ошибка. Неправильно указан пароль суперпользователя СУБД postgres. Вариантов решения два: вспомнить пароль или изменить его. Во втором случае вам нужно будет изменить пароль в свойствах всех существующих информационных баз через оснастку Администрирование серверов “1С:Підприємство”.
Сервер баз данных не обнаружен
FATAL: database “NAME” does not exist
Еще одна очень простая ошибка. Смысл ее сводится к тому, что указанная БД не существует. Чаще всего возникает из-за ошибки в указании имени базы. Следует помнить, что информационная база “1С:Підприємство” в кластере и база данных СУБД – две разные сущности и могут иметь различные имена. Также следует помнить, что Linux системы чувствительны к регистру и для них unf83 и UNF83 два разных имени.
Leave a Reply