Не могу восстановить бекап 1С+PostgreSQL |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6792-й день
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Не могу восстановить бекап 1С+PostgreSQL |
smeegul |
Aug 21 2020, 17:48
Пост
#1
|
Репутация: 31 Активист Группа: Пользователи Сообщений: 298 С нами с: 4-December 06 |
Всем привет!
На начальном пк стояли 1С, PostgresPro 1C 9.6.8 и pgadmin4, я сдела бекап через pgadmin4, а он не хочет восстанавливаться на другом пк(связка стоит та же - 1С, PostgresPro 1C 9.6.8 и pgadmin4). Как я понимаю нужно было делать бекап не pgadmin4, а из консоли средствами PostgresPro 1C 9.6.8, а я сделал через pgadmin4(в нем встроен PostgreSQL 12 без патчей версии PostgresPro 1C) При восстановлении базы вылезает много ошибок: pg_restore: from TOC entry 20356; 1255 22297403 AGGREGATE max(public.mvarchar) postgres pg_restore: error: could not execute query: ОШИБКА: оператор не существует: public.mvarchar public.> public.mvarchar Command was: CREATE AGGREGATE public.max(public.mvarchar) ( SFUNC = public.mvarchar_larger, STYPE = public.mvarchar, SORTOP = OPERATOR(public.>) ); pg_restore: from TOC entry 23378; 1259 22348920 INDEX _document363_2 postgres pg_restore: error: could not execute query: ОШИБКА: для типа данных public.mvarchar не определён класс операторов по умолчанию для метода доступа "btree" HINT: Вы должны указать класс операторов для индекса или определить класс операторов по умолчанию для этого типа данных. Command was: CREATE UNIQUE INDEX _document363_2 ON public._document363 USING btree (_fld887, _number, _idrref); а после восстановления захожу в нее через конфигуратор и появляется вот такая ошибка: http://i.piccy.info/i9/0a9fe431a25b8a65243.../1393018/11.jpg Подскажите, как исправить ошибки? ЗЫ: доступа к пк на котором делал бекап уже нет |
Morftimg |
Aug 21 2020, 18:30
Пост
#2
|
Благодарности: 10 Репутация: 754 0day rescue Группа: Модеры Сообщений: 4 491 С нами с: 21-April 06 |
Попробовать переобьявить базу в 1С сервере с другим именем? И указать ту же базу в Postgres.
|
smeegul |
Aug 22 2020, 10:25
Пост
#3
|
Репутация: 31 Активист Группа: Пользователи Сообщений: 298 С нами с: 4-December 06 |
|
-13- |
Aug 22 2020, 14:49
Пост
#4
|
Благодарности: 5715 Репутация: 1254 Ветеран Группа: Модеры Сообщений: 6 284 С нами с: 17-October 06 |
вы не из Беларуси часом?
гуглится проблема очень похожая на вашу https://postgresql.men/node/214507 Тут такая штука. Патченый для 1C PostgreSQL содержит в себе библиотеку для поддержки специального типа данных mchar (mvchar, mvachar). Но если вы создаёте БД руками, этот тип данных в БД не прогружается как и его обвязка (CAST'ы и прочее). Поэтому при восстановлении pg_restore выдаёт ошибки - там используется данный тип, а как с ним работать СУБД не знает. Т.е. чтобы заработало, надо прогрузить либу в БД, создав данный тип и обвязку к нему. Как сделать это вручную, я к сожалению, не знаю. Но вот что я бы сделал. Включил бы в PostgreSQL логгирование запросов к базе, затем бы создал БД из 1C, затем выключил логгирование и посмотрел какие команды при создании БД попали в лог, относящиеся к mchar. Тогда можно было бы создать пустую БД самому и накатить эти команды, после чего всё должно заработать. |
smeegul |
Aug 23 2020, 0:31
Пост
#5
|
Репутация: 31 Активист Группа: Пользователи Сообщений: 298 С нами с: 4-December 06 |
Я много гуглил, но пока рабочего решения не нашел. Ваш вариант я видел, он мне не подходит, я не настолько знаю PostgreSQL что бы так делать, мне нужна работающая база. Пробовал создать пустую базу средствами 1С и в нее залить дамп, многие ошибки и эта - оператор не существует: public.mvarchar - пропали, но все равно в базу нельзя зайти из 1С из конфигуратора, появляется вот эта ошибка: http://i.piccy.info/i9/82043c9a759021aa7f7...3153/903622.jpg Сравнивал правильно забекапленный PostgresPro 1C дамп пустой базы и проблемный(перевел все в sql). Отличий много, в основном в данных, где-то 150 таких строк: 2087c2057 < PROCEDURE = public.mchar_icase_gt, --- > FUNCTION = public.mchar_icase_gt, 2605c2575 < PROCEDURE = public.mv_mc_case_gt, --- > FUNCTION = public.mv_mc_case_gt, Я готов заплатить, если не сильно дорого, что бы разбирающийся в PostgreSQL человек помог с этой проблемой. |
smeegul |
Aug 24 2020, 12:51
Пост
#6
|
Репутация: 31 Активист Группа: Пользователи Сообщений: 298 С нами с: 4-December 06 |
Решил проблему, хорошо что была точно такая же, рабочая, пустая база.
Я преобразовал бекап в sql код, сравнил два бекапа, пустой и проблемный, заменил где-то 150 раз слово FUNCTION на слово PROCEDURE в проблемном дампе и все заработало. Вот лог сравнения, если интересно: » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « |
Упрощённая версия | Сейчас: 19th October 2024 - 9:06 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |