Məzmuna keç
Tez Base

Расшифровка ошибки 1С

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

Где возникает
На сервере 1С при подключении к базе PostgreSQL, которую создавали не средствами платформы. Мы получили её от ibcmd infobase replicate при переносе с MS SQL на PostgreSQL 17.9-3.1C в сборке 1С, платформа 8.3.27.
Что значит
Платформа подключилась к серверу и нашла базу с нужным именем, но внутри нет того, без чего 1С не хранит данные: типов mchar и mvarchar и служебных функций. Они приходят в базу расширениями mchar, fulleq и fasttrun. Сама база цела, она пустая или неполная, и платформа отказывается в неё писать.
Как ещё выглядит этот текст
  • DATABASE не пригоден для использования
  • Ошибка СУБД DATABASE не пригоден для использования postgresql
  • база данных не пригодна для использования 1с postgres
  • не пригоден для использования ibcmd replicate
  • 1с postgresql нет расширения mchar

Причины

Причина Как узнать Как часто
Целевую базу заранее создали руками: CREATE DATABASE в psql или pgAdmin. Расширений для 1С в ней нет. В целевой базе выполнить SELECT extname FROM pg_extension. Если в списке нет mchar, fulleq, fasttrun, причина эта. встречали сами, на переносе ibcmd с MS SQL
Сервер PostgreSQL не той сборки: обычный дистрибутив, в котором этих расширений нет вовсе. SELECT name FROM pg_available_extensions WHERE name IN ('mchar','fulleq','fasttrun') возвращает пусто. Плюс SELECT version() без пометки сборки для 1С. известная причина, у нас не встречалась
Подключение ушло на соседний экземпляр PostgreSQL на той же машине, например на ванильный на порту 5432 вместо сборки 1С на 5433. Сравнить порт в строке подключения с портом, на котором слушает сборка для 1С, и выполнить SELECT version() через тот же порт. соседний ванильный экземпляр на нашем стенде был, ошибку подключения он нам дал другую

Порядок действий

  1. Остановите ibcmd или создание базы, если процесс ещё висит. Дальше работаем в psql или pgAdmin под суперпользователем.

  2. Проверьте, что подключаетесь к нужному экземпляру. Если на машине стоят два PostgreSQL, порт в строке подключения решает всё. В PowerShell значение вида localhost port=5433 с пробелом внутри берите в кавычки целиком, иначе утилита получит один localhost и пойдёт на порт по умолчанию.

-- в строке ответа должна быть пометка сборки для 1С
SELECT version();
SHOW port;
  1. Убедитесь, что сборка вообще умеет то, чего ждёт платформа:
-- три строки: расширения есть в сборке
-- пусто: сервер не той сборки, ставьте PostgreSQL для 1С
SELECT name, default_version, installed_version
FROM pg_available_extensions
WHERE name IN ('mchar', 'fulleq', 'fasttrun');
  1. Подключитесь к целевой базе и посмотрите, что в ней установлено:
-- выполнять в базе YourDb
SELECT extname, extversion FROM pg_extension ORDER BY extname;

Если mchar, fulleq и fasttrun в списке нет, базу создавали руками.

  1. Пустую базу удалите и не создавайте заранее. ibcmd infobase replicate и создание информационной базы в консоли кластера построят её сами.
-- только если в базе нет данных: проверьте размер перед удалением
SELECT pg_size_pretty(pg_database_size('YourDb'));
DROP DATABASE "YourDb";
  1. Запустите перенос или создание базы заново. Каждый прогон ibcmd идёт с нуля, докатить с места остановки нельзя.

Как проверить, что исправлено

После запуска размер целевой базы растёт (pg_database_size, счётчикам статистики и CPU процесса здесь не верьте), а в stderr ibcmd нет строки “Обнаружена ошибка репликации”. Тот же запрос из шага 4 показывает все три расширения.

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

-- имя табличного пространства и путь к нему
SELECT d.datname, t.spcname, pg_tablespace_location(t.oid) AS path
FROM pg_database d
JOIN pg_tablespace t ON t.oid = d.dattablespace
WHERE d.datname = 'YourDb';

Пустой path значит pg_default, то есть каталог данных кластера. Если он на системном диске, а база должна была уйти на диск данных, останавливайте перенос сразу, пока системному диску есть куда писать.

Если база ушла не на тот диск

Платформа создаёт базу из шаблона template0, поэтому перенос одного template1 в другое табличное пространство ничего не даёт. Надёжнее держать каталог данных кластера сразу на диске под базы. Остальные проверки перед переездом собраны в проверке базы перед миграцией на PostgreSQL.

Наш случай

На репетиции переноса базы 276 ГБ с MS SQL 2022 на PostgreSQL 17.9-3.1C отказ пришёл сразу после старта ibcmd: целевую базу мы создали заранее простым CREATE DATABASE. На той же репетиции база, созданная уже платформой, легла на C: вместо E:, это заметили на 1,7 ГБ при 24 ГБ свободных на системном диске. Сам перенос потом занял 2 часа 28 минут.

Полный разбор переноса базы 1С на PostgreSQL

Похожие ошибки

Переезд на PostgreSQL встал на первом же шаге?

Проверяем сервер и базу на копии, затем сопровождаем ночь переключения.

Qiyməti
450 000 ₸-dənbirdəfəlik sazlama; müşayiət - ayda 150 000 ₸-dən; vergilərsiz

Yazmaq tezdir? Özünüz ölçün

Чек-ап СУБД под 1С: 40+ проверок с вердиктом по каждой

Emalı aç

Частые вопросы

Можно ли докатить расширения в уже созданную базу и не пересоздавать её?

Пустую базу надёжнее удалить и дать платформе создать заново по своему шаблону. Ручная установка расширений не гарантирует, что схема совпадёт с той, которую ждёт платформа.

Подойдёт ли PostgreSQL из официального дистрибутива?

Нет. 1С работает с PostgreSQL в сборках, где есть типы mchar и mvarchar: дистрибутив от самой 1С или Postgres Pro для 1С. Мы проверяли перенос на PostgreSQL 17.9-3.1C под Windows и на Postgres Pro 1С 17.10 под Ubuntu 22.04.

Ошибка ушла, база создалась. Что проверить ещё?

Диск, на который она физически легла: запрос в разделе ниже. Мы поймали базу на системном диске уже после того, как эта ошибка ушла.

Проверено: 1С 8.3.27, PostgreSQL 17.9-3.1C, Windows, ноябрь 2026

Tapşırığı müzakirə edək

Ən sürətlisi WhatsApp: tapşırıq barədə bir-iki sətir yazın, iş günü ərzində cavab verəcəyik.

[email protected]

Müraciəti forma ilə qoymaq daha rahatdır