Задать вопрос
Kenny00
@Kenny00

Почему база созданная через psql не пригодна для использования в 1С?

После создания базы 1С в psql при попытке добавления базы в кластер появляется сообщение об ошибке, что:
DATABASE не пригоден для использования
4evkgrgrp-6g6rjbi0cdbv4izx0.png
Создавал базу 2 способами:
-- Database: MyTest

-- DROP DATABASE "MyTest";

CREATE DATABASE "MyTest"
WITH
OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
TABLESPACE = pg_default
CONNECTION LIMIT = -1;
\q

и
CREATE DATABASE MyTest WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8';

Почему 1С не позволяет работать с такой пустой базой?
Какой минимальный набор в базе должен быть, для "пригодной" среды?

Конечно же если создать пустую базу через консоль кластера или саму 1С, и выгрузить дамп в sql и его потом загрузить на нужный сервер, всё работает, но там создается еще куча объектов, все ли они нужны?

pg_dump -C -h localhost -U postgres usos_test > MyTest.sql

-- DROP DATABASE "MyTest";

CREATE DATABASE "MyTest"
WITH
OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
TABLESPACE = pg_default
CONNECTION LIMIT = -1;
\q

psql -h remote.app.serv01 -U postgres --single-transaction < MyTest.sql

Можно ли в обще создавать пустые базы средствами PostgreSQL?
  • Вопрос задан
  • 8237 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Mikhail_E
@Mikhail_E
1С, SQL
Вручную, базы для 1С обычно не создаются по нескольким причинам.
Одна из основных - структура таблиц, (в т.ч. имена полей и таблиц) должна быть в точности как 1С планируется её использовать. (Имена таблиц, далее будут записаны в соответствие, в отдельной таблице)
Также после создания , эта структура бд, должна быть в опр. виде в двоичных данных в нескольких "Служебных таблицах", в точности воссоздать которую - дело крайне проблематичное.
Если у вас есть желание создавать базы скриптом, самый простой способ - создать "пустышку" из 1С, создать бэкап, а далее его разворачивать там, где вам необходимо.
З.Ы.: даже пустая база, созданная из 1С, по факту будет не пустой, в ней будет куча служебных данных. Именно поэтому, ваша база выдала ошибку при подключении к кластеру (не были обнаружены, служебные данные в служебных таблицах)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@twistfire92
Python backend developer
Создайте пустую серверную базу в 1С, укажите "создать базу в случае ее отсутствия" и посмотрите как выглядит "пустая" 1С база в постгре.
Ответ написан
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Да, 1С использует постгрес в особо извращённой форме. Лучше лишний раз руками в этот набор гирь и противовесов не влезать...
Ответ написан
Jump
@Jump
Системный администратор со стажем.
Почему база созданная через psql не пригодна для использования в 1С?
Потому что база кривая. Вы нужные таблицы создали?

Почему 1С не позволяет работать с такой пустой базой?
Потому что 1с не умеет работать с пустыми базами.

но там создается еще куча объектов, все ли они нужны?
Они вообще не нужны, просто без них не работает.

Можно ли в обще создавать пустые базы средствами PostgreSQL?
Разумеется. Ищите формат хранения данных и метаданных в 1с, вникайте, и разбирайтесь какие объекты должны быть созданы в пустой базе, после чего создавайте их средствами постгресс, уж не знаю зачем это вам нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы