Как исправить ошибку «DATABASE не пригоден для использования» при создании базы 1С на PostgreSQL

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Проанализируем совместимость версий платформы 1С и PostgreSQL

Первым делом необходимо обратить внимание на используемые версии ПО. Как показывает практика, попытка установить самую свежую версию PostgreSQL (например, 16) на стабильную, но более старую платформу 1С (например, 8.3.22), часто приводит к фатальным ошибкам. Рассмотрим ситуацию: если вы используете 1С:Предприятие 8.3.22.2239, важно знать, что официальная поддержка PostgreSQL 16 появилась только в более поздних версиях платформы (начиная с 8.3.27).

Рекомендация: Для платформы 8.3.22 оптимальным и максимально стабильным выбором является PostgreSQL 14.x, адаптированный специалистами компании 1С. Использование «ванильных» (официальных с сайта postgresql.org) версий без специальных патчей также может вызывать ошибку «DATABASE не пригоден для использования», так как 1С требует специфических изменений в механизме блокировок и планах запросов.

Разберем проблему локализации и кодировки (Collation)

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

При инициализации кластера (initdb) необходимо убедиться, что используется локаль Russian_Russia.1251. Если кластер был инициализирован с параметрами C, POSIX или English_United States, 1С не сможет корректно создать системные таблицы и выдаст ошибку о непригодности базы.

Выясним, как правильно выполнить инициализацию. Рассмотрим команду для ручного запуска процесса создания кластера с нужными параметрами:


initdb.exe -D "C:\Program Files\PostgreSQL\14\data" --tune=1c --locale=ru_RU.UTF-8

Однако для Windows-серверов в параметре --locale чаще требуется указывать именно Russian_Russia.1251. Если вы переустанавливаете СУБД, обязательно очистите каталог данных (папку data), иначе новые параметры не применятся к существующему кластеру.

Проанализируем влияние ICU-провайдера

В современных версиях PostgreSQL (15 и 16) механизм работы с локалями претерпел изменения. Появился провайдер icu, который может использоваться по умолчанию вместо системного libc. Платформа 1С старых версий не умеет работать с ICU-локалями так, как ожидает СУБД. Это приводит к тому, что 1С не распознает параметры сортировки и считает базу поврежденной.

Если вы вынуждены использовать новые версии PostgreSQL, проследите, чтобы при создании базы или инициализации кластера использовался провайдер libc. В противном случае наиболее стабильным решением будет откат на PostgreSQL 14 от 1С, где эти механизмы настроены под требования платформы «из коробки».

Проверим права доступа и роль суперпользователя

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

Проанализируем необходимые настройки прав:

  1. Учетная запись, под которой 1С подключается к PostgreSQL, должна иметь статус Superuser.
  2. Проверьте права доступа службы PostgreSQL к папке на диске. Если СУБД установлена на Windows Server 2016, убедитесь, что у пользователя, от имени которого запущена служба (обычно NETWORK SERVICE или локальная учетная запись), есть полные права на чтение и запись в папку с данными СУБД.
  3. Убедитесь, что в пути к базе данных нет кириллических символов или пробелов в названиях, которые могут быть неверно интерпретированы системными вызовами.

Разберем состояние системной базы template1

Малоизвестный факт: 1С создает любую новую базу путем клонирования системного шаблона template1. Если в этот шаблон когда-либо вносились изменения (например, вы вручную создавали там таблицы или меняли кодировку), то любая новая база унаследует эти «проблемы». В результате 1С увидит в новой базе объекты, которых там быть не должно, или несовместимые настройки, и выдаст ошибку о непригодности базы.

Рассмотрим шаги по проверке template1:

  1. Подключитесь к СУБД через pgAdmin.
  2. Проверьте свойства базы template1: кодировка должна быть UTF8 (для версий 1С от 8.3) или WIN1251 (для старых версий), а локаль соответствовать системной.
  3. Убедитесь, что в схеме public базы template1 нет лишних таблиц или функций.

Диагностика через системные логи PostgreSQL

Если вышеописанные методы не помогли, нам необходимо выяснить истинную причину ошибки, которую 1С скрывает за общим сообщением. Для этого проанализируем файл pg_log. Он находится внутри каталога данных (обычно data\pg_log). Для комплексного выявления ошибок в параметрах сервера баз данных можно использовать инструмент для аудита и чек-апа настроек СУБД под требования 1С.

Откройте последний лог-файл в момент возникновения ошибки и найдите строки, предшествующие отказу. Вы можете увидеть следующие сообщения:

Итоговый алгоритм решения проблемы

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

  1. Удаление несовместимых версий: Если вы установили PostgreSQL 15 или 16 для платформы 8.3.22 — удалите их полностью, включая удаление папки data.
  2. Установка правильной версии: Скачайте и установите PostgreSQL 14 с портала 1С (дистрибутив, адаптированный для 1С).
  3. Корректная инициализация: При установке выберите локаль Russian, Russia. Если установка идет через консоль, используйте флаг --locale=Russian_Russia.1251.
  4. Проверка зависимостей: Для Windows Server убедитесь, что установлены все необходимые библиотеки Visual C++ Redistributable, так как PostgreSQL активно их использует для работы с локалями (в частности, библиотеки libicu).
  5. Создание базы: Попробуйте создать базу заново через «Администрирование серверов 1С», указав пользователя postgres с правами суперпользователя.

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

← На главную