Не запускается база 1с на postgresql

Обновлено: 04.07.2024

Типовые ошибки установки сервера 1С:Предприятие и PostgreSQL на платформе Linux.

Связка сервера 1С:Предприятие и PostgreSQL вторая по популярности среди установок 1С и самое используемое решение на платформе Linux. В отличии внедрений на базе Windows и MSSQL, где трудно сделать так, чтобы не заработало, внедрения на базе Linux таят множество подводных камней для неопытного администратора. Часто бывает так, что вроде бы все сделано правильно, но ошибка следует за ошибкой. Сегодня мы рассмотрим самые типовые из них.

Общая информация

Перед тем, как начинать искать ошибки установки и, вообще, приступать к внедрению серверной версии 1С:Предприятия было бы неплохо освежить представление как это работает:

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

Сервер баз данных не обнаружен
ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (Ident)

Данная ошибка возникает при разнесении серверов по разным ПК из-за неправильно настроеной проверки подлинности в локальной сети. Для устранения откройте /var/lib/pgsql/data/pg_hba.conf, найдите строку:

и приведите ее к виду:

где 192.168.31.0/24 - диапазон вашей локальной сети. Если такой строки нет, ее следует создать в секции IPv4 local connections.

Сервер баз данных не обнаружен
could not translate host name "NAME" to address: Temporary failure in name resolution

А теперь вспоминаем, о чем было сказано несколько раньше. Клиентом сервера СУБД является сервер 1С, но никак не клиентский ПК, следовательно запись нужно добавлять на сервере 1С:Предприятие в файл /etc/hosts на платформе Linux или в C:\Windows\System32\drivers\etc\hosts на платформе Windows.

Аналогичная ошибка будет возникать, если вы забыли добавить запись типа A для сервера СУБД на локальном DNS-сервере.

Ошибка при выполнении операции с информационной базой
server_addr=NAME descr=11001(0x00002AF9): Этот хост неизвестен.

где указываете адрес и имя вашего сервера 1С:Предприятия. В случае использования локального DNS следует добавить A-запись для сервера 1С.

Ошибка СУБД: DATABASE не пригоден для использования

Если вы имеете достаточный опыт администрирования 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"

Ошибка СУБД
ERROR: type "mvarchar" does not exist at character 31

или через средство запуска 1С.

Сервер баз данных не обнаружен
ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (по паролю)

Сервер баз данных не обнаружен
FATAL: database "NAME" does not exist


При работе с 1С в клиент-серверном варианте могут возникать ошибки, которые напрямую не связаны с 1С:Предприятием, а связаны непосредственно с сервером управления баз данных.

Далее рассмотрим подробнее каждую ошибку.

Пример полного текста ошибки:

could not translate host name "NAME" to address : Temporary failure in name resolution


Описание:

Ошибка может возникать как при создании базы, так и при запуске информационной базы.

Решение:

Пример полного текста ошибки:

ВАЖНО : пользователь "postgres" не прошёл проверку подлинности ( Ident )


Описание: Ошибка возникает при создании базы.

Решение:

Настроим проверку подлинности.

    1. Сконфигурируем доступ к серверу PostgreSQL в файле: pg_hba.conf:

    Файл должен содержать только следующие строки (содержащие ip серверов 1С) (остальные удалим или пометим как комментарий):

    Строк должно быть, соответственно, несколько, если серверов 1С несколько в кластере.

    Последняя колонка указывает на метод авторизации.

    Если пока теряетесь в настройках доступа. Для понимания, можно сначала открыть все, запустить сервер.

    А после удачного старта сервера СУБД разбираться с настройками доступа.

    ВАЖНО: в pg_hba.conf нет записи для компьютера «», пользователя «usr1cv8», базы «template»

    Пример полного текста ошибки:

    Сервер баз данных не обнаружен ВАЖНО: в pg_hba.conf нет записи для компьютера «», пользователя «usr1cv8», базы «template».


    Описание ошибки:

    Ошибка связана с отсутствием прописанного доступа к базе данных в файле pg_hba.conf

    Решение:

    Добавим запись в файл pg_hba.conf.

    Приведем пример содержания файла, который открывает доступ:

    Строк должно быть, соответственно, несколько, если серверов 1С несколько в кластере.

    Is the server running on host and accepting TCP/IP connections on port 5432?

    Пример полного текста ошибки:

    Сервер баз данных не обнаружен could not connect to server : No rout to host Is the server running on host and accepting TCP / IP connections on port 5432 ?

    Описание:

    Проблема может возникать как при создании информационной базы из консоли администрирования 1С: Предприятия, так и при ее запуске в процессе эксплуатации уже существующей базы данных.

    Решение:

    1. Первоначально, конечно, проверим, есть ли на сервере СУБД PostgreSQL в запущенных процессах процесс postmaster/postgres (в зависимости от версии PostgreSQL) на порту 5432.


    Либо проверим все ли зависимости были установлены. И установим недостающие.

    ERROR: type «tt7» already exists

    Пример полного текста ошибки:

    HINT : A relation has an associated type of the same name , so you must use a name that doesn ' t conflict .


    Описание:

    Данная ошибка является «плавающей» и может возникать в различных местах

    Решение:

    Выгрузим и загрузим базу данных средствами 1С:Предприятия(через файл *.dt).

    ERROR: could not read block

    Ошибка при выполнении операции с информационно базой по причине : Ошибка СУБД : ERROR : could not read block . . . in file "" Input / output error


    Описание ошибки:

    База не запускается. Разрушились диски.

    Решения:

    Переносим базу на другую дисковую систему.

    Разворачиваем из резервной копии.

    Пример полного текста ошибки:

    Не удалось привязаться к адресу . Адрес уже используется . Возможно порт 5432 занят другим процессом postmaster ? Система БД выключена . Не удалось запустить сервер .


    Описание:

    Такая ситуация часто случается у начинающих администраторов в случае, если они хотят инициализировать сервер в каталог отличный от каталога по умолчанию. При этом сервер уже запустили из каталога по умолчанию.

    В этой ситуации при попытке запуска видно ошибку – сервер не запускается.

    А при проверке состояния видно, что сервер работает.


    Если проверим запущенные процессы пользователя postgres, то можно увидеть, что порт 5432 занят кластером PostgreSQL, только запущенным из каталога по умолчанию.


    Решение:

    Остановим работающий кластер сервера СУБД.

    / opt / pgpro / ent - 10 / bin / pg_ctl -- locale = ru_RU . UTF - 8 - D / var / lib / pgpro / ent - 10 / data stop

    Инициализируем кластер из нового каталога(если он не инициализирован).

    / opt / pgpro / ent - 10 / bin / initdb -- locale = ru_RU . UTF - 8 - D / pgpro / pgdata

    Запустим из нового каталога.

    / opt / pgpro / ent - 10 / bin / pg_ctl -- locale = ru_RU . UTF - 8 - D / pgpro / pgdata start

    Описание:

    Длительный запуск, длительный захват объектов в хранилище, длительное сохранение конфигурации 1С:Предприятия.

    Решение:

    Такая проблема может быть связано с настройками СУБД PostgreSQL.

    Рассчитаем настройки СУБД.

    Описание настроек приведено на ИТС.

    Выполним настройки, для этого перейдем в терминал psql:

    Через psql установим параметры командой ALTER SYSTEM SET(параметры необходимо указать для вашей СУБД):

    ALTER SYSTEM SET max_parallel_workers_per_gather = 22 ;

    Описание ошибки:

    При загрузке данных из файла *.xlsx в 1С отображаются иероглифы. Используемая СУБД PostgreSQL/PostgresPro.


    Также возможна проблема с кодировкой в выгружаемом файле из 1С:


    Решение:

    На сервере СУБД проверим и выполним настройку локали.

    1. Проверим наличие локали:

    2. Проверим переменную:

    Корректное значение результатов выполнения команд 2, 3:

    3. Если результат не соответствует, выполним:

    5. Выполним перезапуск серверов СУБД

    Еще можно посмотреть

    Ошибки на клиенте 1с линукс-1

    Ошибки на клиенте при подключении к серверу 1С на Linux. Часть 1

    Рассмотрены ошибки при подключении к серверу 1С на Linux. Изложена методика поиска причин и путей их исправления


    Отладка на сервере 1С на Linux


    Ошибки СУБД. 1С+PostgreSQL+Linux. Часть 1.


    Проверка рабочих процессов сервера 1С на Linux

    Как проверить на Linux запущены ли процессы сервера 1С. Проверка открытых портов сервера 1С

    Хранение файлов 1С в томах на nfs-шаре Linux


    Администрирование серверов 1С на Linux

    Настройка сервера хранилища конфигураций 1С на Linux

    Установка и настройка хранилища конфигураций 1C на Linux сервере

    Хранилище конфигурации 1С:Предприятия 8.3 является инструментом групповой разработки. Настраиваем сервер хранилища на Linux.

    Ошибка формата потока. Восстановление базы при использовании СУБД PostgreSQL

    oshibka-formata-potoka-postgres-001.jpg

    Столь же скупа и информация для технической поддержки:

    oshibka-formata-potoka-postgres-002.jpg

    Обычно это вызывает у пользователей и неподготовленных администраторов тихую панику, особенно если под рукой нет актуальной резервной копии. А судорожные попытки восстановления базы, обычно без понимания смысла выполняемых действий приводят как правило к ее полному разрушению.

    К возникновению данной ошибки приводит повреждение основной конфигурации информационной базы. Реже - кеша конфигурации информационной базы, в последнем случае устранить ошибку можно путем очистки кеша, для этого можете воспользоваться нашей утилитой 1:Tools (кто хочет поддержать нас - может скачать ее по ссылке с Инфостарта)

    В остальных случаях придется заниматься восстановлением непосредственно базы. В этом месте мы сразу внесем ясность и разделим сущности: информационная база 1С - это хранилище данных на уровне логики 1С:Предприятия которое описывается конфигурацией информационной базы. Т.е. именно здесь содержатся документы, справочники, регистры и т.д. и т.п., а повреждение конфигурации информационной базы делает невозможной работу с ними на этом уровне абстракции. База данных СУБД - это набор таблиц в которых хранятся как данные, так и конфигурация информационной базы 1С.

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

    В зависимости от того, какая именно часть конфигурации ИБ оказалась повреждена база может не загружаться в обычном режиме, но загружаться в Конфигуратор, либо вообще не загружаться никак. Если доступен режим конфигуратора, то можно попробовать снять базу с поддержки и загрузить в нее исправную конфигурацию из файла, в некоторых случаях это приведет к успеху, в других может потребоваться сначала выявить и удалить сбойный элемент метаданных.

    Все это достаточно сложно и не всегда приносит требуемый результат, поэтому проще и надежнее заменить конфигурацию информационной базы на заведомо исправную используя инструменты СУБД, в нашем случае PostgreSQL. В зависимости от используемой ОС (Windows или Linux) некоторые аспекты работы с PostgreSQL могут отличаться и это будет оговорено отдельно, в остальных случаях указанные команды применяются вне зависимости от платформы.

    Перед тем как начинать работу с PostgreSQL в Linuх последовательно повысим свои права для суперпользователя и затем войдем в систему от имени пользователя postgres:

    Если утилита sudo не установлена (такой вариант может быть в Debian), то:

    В первом случае вам потребуется ввести пароль от текущей учетной записи, во втором - от учетной записи суперпользователя (root).

    Затем обязательно сделаем копию информационной базы средствами СУБД. Получить список баз данных в кластере СУБД можно командой:

    В Windows вам потребуется ввести пароль пользователя postgres.

    oshibka-formata-potoka-postgres-003.jpg

    Выяснив имя необходимой базы данных выгрузим ее дамп командой:

    Где basename - имя нужной базы данных. Обратите внимание, что в Windows мы можем явно задать путь выгрузки дампа, а в Linux выгружаем его в домашнюю директорию пользователя postgres, т.е. /var/lib/postgresql.

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

    После чего откроем интерактивный терминал PostgreSQL в котором будем производить все последующие действия:

    В этом случае выполните:

    Теперь подключимся к исправной базе:

    где newbasename - имя исправной базы данных. При этом в строке приглашения появится имя подключенной базы.

    Из нее мы выгрузим таблицу config в которой находится основная конфигурация информационной базы.

    Обратите внимание, при указании пути для операционной системы Windows вы также должны использовать прямой, а не обратный слеш. Также служба СУБД должна иметь права на запись в целевую аудиторию, проще всего это сделать выдав полные разрешения для пользователя Все.

    Переподключимся к поврежденной базе:

    На всякий случай, также сохраним содержимое таблицы config:

    После чего очистим сбойную таблицу:

    И загрузим в нее данные из исправной информационной базы:

    Для выхода из терминала PostgreSQL введите:

    Если все сделано правильно, то поврежденная конфигурация информационной базы будет заменена на исправную и ее работоспособность будет восстановлена.

    В некоторых случаях оказывается повреждена не основная конфигурация информационной базы, а конфигурация, открытая на редактирование в Конфигураторе. Внешне это проявляется как невозможность загрузить информационную базу в этом режиме. Для исправления этой ошибки достаточно очистить таблицу configsave:

    Как видим, устранение ошибки формата потока средствами СУБД PostgreSQL достаточно несложно, однако требует некоторых навыков работы с данной СУБД. Но если вы будете внимательно и вдумчиво следовать нашей инструкции, то проблем у вас возникнуть не должно.

    Читайте также: