Имя: Пароль:
1C
1С v8
Ошибки при восстановлении БД Postgres из sql-бэкапа
0 zelenprog
 
20.01.25
14:49
Здравствуйте!

Клиент-серверная база "Комплексная автоматизация 2.5".
Сервер баз данных - PostgreSQL.
Каждую ночь создается бэкап в текстовом формате в виде сжатого sql-файла.

Пытаюсь сделать копию базы на том же самом сервере БД.

Для этого сначала создаю чистую БД и восстанавливаю в нее данные из бэкапа средствами Postgres-а.
В режиме psql выполняю команды:
1) create database db_copy;
2) \с db_copy
3) \i db_backup_2025-01-20.sql

При восстановлении БД в консоль выводится текст выполняемых sql-команд. После выполнения всех команд проверяю что там вывелось в консоль, и вижу вот такие ошибки:

Строка    52: psql:/var/archive/complex2020_dev_2025-01-20.sql:180: ОШИБКА:  функция "datediff2" с аргументами таких типов уже существует
Строка 47841: psql:/var/archive/complex2020_dev_2025-01-20.sql:10042906: ОШИБКА:  создать уникальный индекс "paramsng_pkey" не удалось
DETAIL:  Ключ (filename, partno)=(ibparams.inf, 0) дублируется.
Строка 89817: psql:/var/archive/complex2020_dev_2025-01-20.sql:10277953: ОШИБКА:  отношение "byname" уже существует
Строка 89818: psql:/var/archive/complex2020_dev_2025-01-20.sql:10277960: ОШИБКА:  отношение "byname_v8userpwdplcs" уже существует

Не могу понять причину этих ошибок.
Откуда в новой чистой базе могли появиться эти объекты?
Что надо сделать, чтобы этих ошибок не было?
Помогите разобраться.
1 vbus
 
20.01.25
14:55
А какой командой каждую ночь создается резервная копия?
2 zelenprog
 
20.01.25
15:20
(1) pg_dump -U postgres complex2020_dev | pigz > complex2020_dev_$TIME.sql.gz
3 ansh15
 
20.01.25
15:34
Что-то смутно припоминается насчет datediff2 и уникальности индекса в эпоху Pg редакций от 10 до 12 - https://forum.infostart.ru/forum16/topic260082/
Может, при выгрузке в sql файл, создание функции, индекса и таблиц два раза было записано, типа глюк конкретной версии Pg...
4 vbus
 
20.01.25
15:40
Выглядит нормально, а что в скрипте db_backup_2025-01-20.sql
5 zelenprog
 
22.01.25
08:33
Разобрался в чем дело...
Информационная база в кластере 1С "ссылается" на базу данных PostgreSQL.
При этом кластер постоянно "лезет" в БД Postgres-а, и "мешает" восстановлению БД в Postgres-е.
Для восстановления надо временно разорвать "связь" между информационной базой и базой данных.

Вот здесь хорошо написано:
https://helpme1s.ru/nastrojka-sql-arxivov-ms-sql-server-i-postgrgesql-v-obnovlyatore-v3#___postgres
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn