Содержание
- Как устранить ошибку Postgresql 8.4 «язык« plpgsql »уже существует»?
- 2 ответа
- Восстановление базы 1с Postgress
- Error language plpgsql already exists
Как устранить ошибку Postgresql 8.4 «язык« plpgsql »уже существует»?
После создания базы данных я восстанавливаю базу данных в PostgreSQL 8.4 на этой пустой / новой базе данных, используя файл .backup через сценарий (с надлежащей обработкой ошибок). Если возникает какая-либо ошибка, сценарий прерывает весь процесс и помечает процесс как сбойный. При восстановлении базы данных выдается следующая ошибка:
Я знаю, что эту ошибку следует игнорировать в PostgreSQL 8.x, но поскольку я выполняю ее с помощью сценария, эту проблему необходимо решить, т. Е. Код выхода PostgreSQL должен быть равен 0, в противном случае весь процесс не будет завершен ,
Есть идеи как это сделать?
2 ответа
Проработав несколько часов над этой проблемой, я обнаружил, что следующее решение является простым и простым. Базы данных, созданные с помощью команды «CREATE DATABASE», по умолчанию используют стандартную системную базу данных с именем «template1». Вместо этого используйте ‘template0’. Как указано в документе :
Указав CREATE DATABASE скопировать template0 вместо template1, вы можете создать «целевую» пользовательскую базу данных, которая не содержит никаких локальных дополнений в template1. Это особенно удобно при восстановлении дампа pg_dump: сценарий дампа должен быть восстановлен в первичной базе данных, чтобы гарантировать, что каждый воссоздает правильное содержимое базы данных дампа, без каких-либо конфликтов с объектами, которые могли быть добавлены в template1 позже.
Я сомневаюсь, что есть элегантный обходной путь. Все говорят, что сообщение следует игнорировать.
Грязный обходной путь: вставьте DROP LANGUAGE .. перед pg_restore и CREATE OR REPLACE LANGUAGE после (последний, на случай, если в дамп не был включен оператор CREATE)
Источник
Восстановление базы 1с Postgress
хорошо попробую.
Вот создал новую базу и в нее восстановил с помощью pgAdmin/ он по умолчанию сделал такой командой:
C:Program Files (x86)PostgreSQL8.4.3-3.1Cbinpg_restore.exe -i -h localhost -p 5432 -U postgres -d «BuhTemp» -v «F:postgres_backupBUH_120725.backup»
В итоге куча ошибок. и база не восстановлена, даже конфигуратор не открывается.
.
pg_restore: connecting to database for restore
pg_restore: creating SCHEMA public
pg_restore: creating COMMENT SCHEMA public
pg_restore: creating PROCEDURAL LANGUAGE plpgsql
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 5256; 2612 16386 PROCEDURAL LANGUAGE plpgsql postgres
pg_restore: [archiver (db)] could not execute query: ERROR: language «plpgsql» already exists
Command was:
CREATE PROCEDURAL LANGUAGE plpgsql;
pg_restore: creating SHELL TYPE chkpass
pg_restore: [archiver (db)] Error from TOC entry 1230; 0 0 SHELL TYPE chkpass postgres
pg_restore: [archiver (db)] could not execute query: ERROR: type «chkpass» already exists
.
pg_restore: creating FUNCTION isnge(ean13, upc)
pg_restore: [archiver (db)] Error from TOC entry 391; 1255 17237 FUNCTION isnge(ean13, upc) postgres
pg_restore: [archiver (db)] could not execute query: ERROR: function «isnge» already exists with same argument types
Command was: CREATE FUNCTION isnge(ean13, upc) RETURNS boolean
LANGUAGE internal IMMUTABLE STRICT
AS $$int8ge$$;
.
pg_restore: setting owner and privileges for INDEX byosname
pg_restore: setting owner and privileges for INDEX byrolesid
pg_restore: setting owner and privileges for INDEX byshow
WARNING: errors ignored on restore: 6866
Процесс вернул код выхода 1.
создал пустую базу, почему то опять ругается на существующие элементы. и в самом конце вот что выдал:
pg_restore: [archiver (db)] COPY failed: ERROR: out of memory
DETAIL: Failed on request of size 536870912.
CONTEXT: COPY config, line 9419: «e0666db2-45d6-49b4-a200-061c6ba7
-8696-411f-95a1-ef011fdf8da9 2012-03-28 16:49:37 2012-0. »
WARNING: errors ignored on restore: 1130
В итоге база не запускается. конфигуратор открывается но видит пустую конфигурацию
pg_restore: [archiver (db)] Error from TOC entry 13847; 0 361139 TABLE DATA config user1c
pg_restore: [archiver (db)] COPY failed: ERROR: duplicate key value violates unique constraint «config_pkey»
CONTEXT: COPY config, line 1: «d4a1f489-2fba-41f6-ab57-3986f22c7403 2012-03-28 16:50:37 2012-03-28 16:50:37 0 89 <\277<\177\265. »
pg_restore: restoring data for table «configsave»
pg_restore: restoring data for table «dbschema»
pg_restore: restoring data for table «files»
pg_restore: [archiver (db)] Error from TOC entry 13850; 0 377251 TABLE DATA files user1c
pg_restore: [archiver (db)] COPY failed: ERROR: duplicate key value violates unique constraint «files_pkey»
CONTEXT: COPY files, line 1: «c01b78f6-1525-41b1-9cc1-69e3da58d2ac.pfl 2010-12-30 10:15:16 2012-05-16 12:42:04 0 416 \215\207\0. »
pg_restore: restoring data for table «params»
pg_restore: [archiver (db)] Error from TOC entry 13849; 0 377204 TABLE DATA params user1c
pg_restore: [archiver (db)] COPY failed: ERROR: duplicate key value violates unique constraint «params_pkey»
CONTEXT: COPY params, line 1: «locale.inf 2010-12-30 10:15:15 2010-12-30 10:15:15 0 36 \357\273\277<«ru_RU»,0,0,»»,-1,»»,»»,»»,». »
pg_restore: restoring data for table «v8users»
WARNING: errors ignored on restore: 600
Процесс вернул код выхода 1.
Это выдает при попытке «восстановить только данные » из pgAdmin в работоспособную бухгалтерию за июль
не помогло 9 постгри. Опять куча ошибок и база не открывается.
pg_restore: dropping SHELL TYPE ean13
pg_restore: dropping TYPE dblink_pkey_results
pg_restore: dropping COMMENT TYPE cube
pg_restore: dropping TYPE cube
pg_restore: dropping FUNCTION cube_out(cube)
pg_restore: [archiver (db)] Error from TOC entry 164; 1255 16855 FUNCTION cube_out(cube) postgres
pg_restore: [archiver (db)] could not execute query: ERROR: type «cube» does not exist
Command was: DROP FUNCTION public.cube_out(cube);
.
pg_restore: setting owner and privileges for INDEX byshow
WARNING: errors ignored on restore: 5395
Процесс вернул код выхода 1.
Не хочу показаться занудой, но вместо анализа дампа я бы сделал следующее:
1) Выгрузил базу в dt через конфигуратор
2) Залил базу на Postgre 9.1.2 из dt через конфигуратор
3) Сделал бы дамп в postgre 9.1.2
4) Попробовал бы залить на тот же 9.1.2 полученный дамп.
P.S. У меня для 9.1.2 дампа в командной строке есть приписочка:
-b -Z 9 -E UTF-8 — здесь указываю компрессию и кодировку
х.з. насколько это принципиально. Да — и восстанавливать я пробовал через pgAdmin 1.14.1 — хотя это тоже не принципиально — можно потом командную строку срисовать из графического интерфейса.
(22) >>Не знаю, может вам имеет смысл попробовать установить 64-битный постгри и там развернуть архив, если, канечно, есть где-то такая сборка с патчами 1С под винду.
Источник
Error language plpgsql already exists
Иван Человеков |
|
||
Бывалый Профиль Репутация: нет СУБД PostgreSQL 8.2 cделал утилитой pgAdmin III версия 1.6.2 backup, когда я его пытаюсь восстановить, восстановление идёт с ошибкой:
Process returned exit code 1. |
Подскажите, в чём может быть проблема?
Как Вы делаете бэкап? Может есть альтернативный способ?
Спасибо
tux |
|
|||
Летатель Профиль Репутация: 2
Проблема в том, что в базе объекты (таблицы и т.п.) уже существуют, а ты из скрипта пытаешься создать их заново. Чтобы создать скрипт, который будет удалять объекты прежде чем создавать, можно выполнить следующее:
|
||||
|
Иван Человеков |
|
|||
Бывалый Профиль Репутация: нет
Как теперь его восстановить? Получается надо использовать утилиту psql, потому как дамп текстовый(pg_restore — подходит для архивов). Я верно понимаю?
Но не получается, как только я не пробовал |
||||
|
tux |
|
|||
Летатель Профиль Репутация: 2
|
||||
|
Иван Человеков |
|
||||
Бывалый Профиль Репутация: нет
[ Время генерации скрипта: 0.1255 ] [ Использовано запросов: 21 ] [ GZIP включён ] Источник Adblock |
After creating a database, I am restoring a database in PostgreSQL 8.4 on this blank/new database using a .backup file through a script (with proper error handling). If any error occurs, then script aborts the whole process and marks the process as failed. During database restore following error is generated:
pg_restore: connecting to database for restore
pg_restore: creating SCHEMA public
pg_restore: creating COMMENT SCHEMA public
pg_restore: creating PROCEDURAL LANGUAGE plpgsql
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 302; 2612 16386 PROCEDURAL LANGUAGE plpgsql postgres
pg_restore: [archiver (db)] could not execute query: ERROR: language "plpgsql" already exists
Command was:
CREATE PROCEDURAL LANGUAGE plpgsql;
pg_restore: setting owner and privileges for SCHEMA public
pg_restore: setting owner and privileges for COMMENT SCHEMA public
pg_restore: setting owner and privileges for ACL public
pg_restore: setting owner and privileges for PROCEDURAL LANGUAGE plpgsql
WARNING: errors ignored on restore: 1
Exit code : 1
I know, that this error should be ignored in PostgreSQL 8.x, but since I am executing this through a script, this issue is required to be resolved i.e. PostgreSQL’s exit code should be 0, otherwise, the whole process won’t be completed.
Any idea how to do this?
asked May 10, 2017 at 16:22
useruser
3535 silver badges18 bronze badges
1
After working on this issue for several hours, I found the following solution to be basic and simple. The databases created using command ‘CREATE DATABASE’ uses standard system database named ‘template1’ by default. Instead, use ‘template0’. As stated in the document:
By instructing CREATE DATABASE to copy template0 instead of template1, you can create a «virgin» user database that contains none of the site-local additions in template1. This is particularly handy when restoring a pg_dump dump: the dump script should be restored in a virgin database to ensure that one recreates the correct contents of the dumped database, without any conflicts with objects that might have been added to template1 later on.
answered May 11, 2017 at 5:51
useruser
3535 silver badges18 bronze badges
I doubt there is an elegant workaround. Everyone says the message should be ignored.
A dirty workaround: Insert a DROP LANGUAGE ..
before the pg_restore
and a CREATE OR REPLACE LANGUAGE
afterwards (the latter, just in case the dump didn’t include a CREATE statement)
answered May 10, 2017 at 17:13
leonbloyleonbloy
71.7k20 gold badges139 silver badges189 bronze badges
Snippets
CREATE OR REPLACE LANGUAGE
Works with PostgreSQL
any
Written in
SQL
Depends on
Nothing
For PostgreSQL 9.0 and newer
In current releases of PostgreSQL «CREATE OR REPLACE LANGUAGE» is the native syntax for installing a procedural language with no error if it’s already installed.
Also PL/pgSQL is installed in the template databases at install time, so will be included in all newly created databases by default, so there’s usually no need to install it in schema installation scripts.
For PostgreSQL 8.4 and older
While there is no CREATE OR REPLACE for languages like there are for functions, you can simulate one for the common case where you want to add the pl/pgsql language to a database. Normally this will trigger an ERROR condition if the language is already installed:
$ psql -c "CREATE LANGUAGE plpgsql" ERROR: language "plpgsql" already exists
But the following snippet will add the language only if it doesn’t already exist:
CREATE OR REPLACE FUNCTION make_plpgsql() RETURNS VOID LANGUAGE SQL AS $$ CREATE LANGUAGE plpgsql; $$; SELECT CASE WHEN EXISTS( SELECT 1 FROM pg_catalog.pg_language WHERE lanname='plpgsql' ) THEN NULL ELSE make_plpgsql() END; DROP FUNCTION make_plpgsql();
You can run this multiple times and it will never produce the error shown above. The DROP FUNCTION at the end is optional, if you want to re-use this snippet in other code you might keep the function around to be referenced later.
- Original code by David Fetter
17.09.12 — 19:09
Добрый вечер. на Win Server 2003 установлен сервер 1с, PostgreSQL.
Делаются резервные копии каждый день. Но столкнулся с проблемой. необходимо восстановить базу на определенное число, а он при восстановлении выдает кучу ошибок на то что таблица существует, метод существует и тд , невозможно перезаписать. и в итоге Процесс вернул код выхода 1.
Соответсвенно в пустую базу он ничего не восстанавливает, она остается пустой. пробовал как создавать новую базу из управления серверами 1с, так и средствами postgres.
1 — 17.09.12 — 19:12
бэкап делается по команде
«C:Program Files (x86)PostgreSQL8.4.3-3.1Cbinpg_dump.exe» -i -h localhost -p 5432 -U postgres -Fc -b -f «F:postgres_backup%datetemp%.backup» Base
Восстанавливать пробовал из PgAdmin и командой
«C:Program Files (x86)PostgreSQL8.4.3-3.1Cbinpg_restore.exe» -i -h localhost -U postgres -c -d BuhTemp «F:postgres_backupBUHBUH_120803.backup»
2 — 17.09.12 — 19:37
Base сначала очистить надо. Или удалить, а потом — опять создать.
3 — 17.09.12 — 19:39
схему дропни или только таблицы
4 — 17.09.12 — 20:32
Я пустую базу создаю и в нее пытаюсь восстанавливать, наверно не имеет значения что у нее имя другое?
5 — 17.09.12 — 21:51
(4) Не имеет.
Попробуйте без флага -с в созданную пустую базу. Сейчас проверял, с флагом -с (-c —clean Clean (drop) database objects before recreating them) выдает ошибки, без него нормально восстанавливает.
6 — 17.09.12 — 22:09
хорошо попробую.
Вот создал новую базу и в нее восстановил с помощью pgAdmin/ он по умолчанию сделал такой командой:
C:Program Files (x86)PostgreSQL8.4.3-3.1Cbinpg_restore.exe -i -h localhost -p 5432 -U postgres -d «BuhTemp» -v «F:postgres_backupBUH_120725.backup»
В итоге куча ошибок. и база не восстановлена, даже конфигуратор не открывается.
…..
pg_restore: connecting to database for restore
pg_restore: creating SCHEMA public
pg_restore: creating COMMENT SCHEMA public
pg_restore: creating PROCEDURAL LANGUAGE plpgsql
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 5256; 2612 16386 PROCEDURAL LANGUAGE plpgsql postgres
pg_restore: [archiver (db)] could not execute query: ERROR: language «plpgsql» already exists
Command was:
CREATE PROCEDURAL LANGUAGE plpgsql;
pg_restore: creating SHELL TYPE chkpass
pg_restore: [archiver (db)] Error from TOC entry 1230; 0 0 SHELL TYPE chkpass postgres
pg_restore: [archiver (db)] could not execute query: ERROR: type «chkpass» already exists
……..
pg_restore: creating FUNCTION isnge(ean13, upc)
pg_restore: [archiver (db)] Error from TOC entry 391; 1255 17237 FUNCTION isnge(ean13, upc) postgres
pg_restore: [archiver (db)] could not execute query: ERROR: function «isnge» already exists with same argument types
Command was: CREATE FUNCTION isnge(ean13, upc) RETURNS boolean
LANGUAGE internal IMMUTABLE STRICT
AS $$int8ge$$;
……
pg_restore: setting owner and privileges for INDEX byosname
pg_restore: setting owner and privileges for INDEX byrolesid
pg_restore: setting owner and privileges for INDEX byshow
WARNING: errors ignored on restore: 6866
Процесс вернул код выхода 1.
7 — 17.09.12 — 22:54
А базу чем создаете? Из консоли администрирования 1С? Или в PgAdmin?
8 — 17.09.12 — 23:26
уже и тем и другим способом пробовал. Все равно не восстанавливает. причем пробовал уже и другой архив брать, тоже самое. может не правильная команда создания копии?
9 — 18.09.12 — 10:17
Посомтри содержимое архива, вдруг он текстовый, блокнотом каким-нибудь.
Архив, созданный с флагом «-F c» начинается со слова PGDUMP, текстовый начинается со строк
—
— PostgreSQL database dump
—
и дальше команды SQL. Можно попробовать явно задать custom формат в pg_restore «-F c». Кстати, у тебя в командной строке «-Fc», без пробела, может в Windows как-то влияет, в Linux без разницы.
10 — 18.09.12 — 11:54
Хорошо, попытаюсь посмотреть, уже 5 минут WordPad открывает.
Кстати, не могли бы выложить рабочую комбинацию команд архивации и восстановления. на будущее хотя бы поменять. потому как походу ни один архив не восстанавливается.
11 — 18.09.12 — 12:29
архив начинается с
PGDMP
потмо название базы, кодировка и наверное команды. правда все так висит, что даже скопировать оттуда не удается.
Кстакти вот например строка
2200 — public — SCHEMA T CREATE SCHEMA public;
?I DROP SCHEMA public;
o postgres | false
странно как то, получается он сначала создает а потом удаляет?
12 — 18.09.12 — 12:36
и интересно что значит строчка
postgres | false? там много таких, или User1c | false. что то с пользователями связано
13 — 18.09.12 — 12:36
Базу рукам попробуй создать, в командной строке на сервере. creаtedb.exe -U postgres testbuh1, например.
Потом pg_restore.exe -U postgres -d testbuh1 имя_архива.
14 — 18.09.12 — 13:55
создал пустую базу, почему то опять ругается на существующие элементы. и в самом конце вот что выдал:
pg_restore: [archiver (db)] COPY failed: ERROR: out of memory
DETAIL: Failed on request of size 536870912.
CONTEXT: COPY config, line 9419: «e0666db2-45d6-49b4-a200-061c6ba7
-8696-411f-95a1-ef011fdf8da9 2012-03-28 16:49:37 2012-0…»
WARNING: errors ignored on restore: 1130
В итоге база не запускается. конфигуратор открывается но видит пустую конфигурацию
15 — 18.09.12 — 14:06
если только попробовать загрузить сначала в базу дтшник старый, а потом попробовать через постгрес восстановить только данные?
16 — 18.09.12 — 15:20
«COPY failed: ERROR: out of memory» — проходили, вылечили только загрузкой дампа в постгри, установленный на линуксе, на виндовый постгря дамп упорно не хотел заливаться, вылезала «out of memory», никакие манипуляции с конфигом не помогали.
17 — 18.09.12 — 15:22
А корень зла — бинарники, хранимые в БД, большие фотографии или pdf-ки…
18 — 18.09.12 — 15:56
Бухгалтерия предприятия. вроде нет файлов. если только документы.
19 — 18.09.12 — 15:58
а на виртуалке если поднять постгри, думаете поможет?
20 — 18.09.12 — 16:21
pg_restore: [archiver (db)] Error from TOC entry 13847; 0 361139 TABLE DATA config user1c
pg_restore: [archiver (db)] COPY failed: ERROR: duplicate key value violates unique constraint «config_pkey»
CONTEXT: COPY config, line 1: «d4a1f489-2fba-41f6-ab57-3986f22c7403 2012-03-28 16:50:37 2012-03-28 16:50:37 0 89 {\277{\177\265…»
pg_restore: restoring data for table «configsave»
pg_restore: restoring data for table «dbschema»
pg_restore: restoring data for table «files»
pg_restore: [archiver (db)] Error from TOC entry 13850; 0 377251 TABLE DATA files user1c
pg_restore: [archiver (db)] COPY failed: ERROR: duplicate key value violates unique constraint «files_pkey»
CONTEXT: COPY files, line 1: «c01b78f6-1525-41b1-9cc1-69e3da58d2ac.pfl 2010-12-30 10:15:16 2012-05-16 12:42:04 0 416 \215\207\0…»
pg_restore: restoring data for table «params»
pg_restore: [archiver (db)] Error from TOC entry 13849; 0 377204 TABLE DATA params user1c
pg_restore: [archiver (db)] COPY failed: ERROR: duplicate key value violates unique constraint «params_pkey»
CONTEXT: COPY params, line 1: «locale.inf 2010-12-30 10:15:15 2010-12-30 10:15:15 0 36 \357\273\277{«ru_RU»,0,0,»»,-1,»»,»»,»»,»…»
pg_restore: restoring data for table «v8users»
WARNING: errors ignored on restore: 600
Процесс вернул код выхода 1.
Это выдает при попытке «восстановить только данные » из pgAdmin в работоспособную бухгалтерию за июль
21 — 18.09.12 — 16:21
и соответственно новых данных не появляется
22 — 18.09.12 — 16:30
(19) Я на виртуалке не стал развертывать, ибо винда и железо было только 32 разрядное, просто на какой-то ближайшей рабочей станции установил линукс и слона.
Не знаю, может вам имеет смысл попробовать установить 64-битный постгри и там развернуть архив, если, канечно, есть где-то такая сборка с патчами 1С под винду…
23 — 18.09.12 — 16:46
Я бы посоветовал взять 9-й постгри и попробовать на нем (в том числе и утилиты pg_dump / pg_restore соответствующих версий)… Я тут неоднократно писал про чудеса 8.4.x. У меня сейчас крутится 9.1.2 от 1С — вроде полет нормальный — и с бэкапом, и с восстановлением.
24 — 18.09.12 — 17:41
поставил 9,1,2 постгри, пытаюсь туда восстановить. посмотрим
25 — 18.09.12 — 18:41
не помогло 9 постгри. Опять куча ошибок и база не открывается.
pg_restore: dropping SHELL TYPE ean13
pg_restore: dropping TYPE dblink_pkey_results
pg_restore: dropping COMMENT TYPE cube
pg_restore: dropping TYPE cube
pg_restore: dropping FUNCTION cube_out(cube)
pg_restore: [archiver (db)] Error from TOC entry 164; 1255 16855 FUNCTION cube_out(cube) postgres
pg_restore: [archiver (db)] could not execute query: ERROR: type «cube» does not exist
Command was: DROP FUNCTION public.cube_out(cube);
…
pg_restore: setting owner and privileges for INDEX byshow
WARNING: errors ignored on restore: 5395
Процесс вернул код выхода 1.
26 — 18.09.12 — 19:33
Сильно большой у вас дамп?
27 — 18.09.12 — 20:15
+ (26) Давай дамп, выкладывай куда-нить.
28 — 18.09.12 — 22:27
Не хочу показаться занудой, но вместо анализа дампа я бы сделал следующее:
1) Выгрузил базу в dt через конфигуратор
2) Залил базу на Postgre 9.1.2 из dt через конфигуратор
3) Сделал бы дамп в postgre 9.1.2
4) Попробовал бы залить на тот же 9.1.2 полученный дамп.
P.S. У меня для 9.1.2 дампа в командной строке есть приписочка:
-b -Z 9 -E UTF-8 — здесь указываю компрессию и кодировку
х.з. насколько это принципиально. Да — и восстанавливать я пробовал через pgAdmin 1.14.1 — хотя это тоже не принципиально — можно потом командную строку срисовать из графического интерфейса.
29 — 18.09.12 — 23:05
(22) >>Не знаю, может вам имеет смысл попробовать установить 64-битный постгри и там развернуть архив, если, канечно, есть где-то такая сборка с патчами 1С под винду…
Есть. На пользовательском сайте 1С.
30 — 19.09.12 — 01:16
Выгрузить базу в dt я конечно могу, но бухгалтерам вот приспичило восстановить от 1го августа. че то они там удалили потом нечаянно. поэтому и мучаюсь с этим дампом, т.к. нету других копий за те числа.
64 юитный постгри.. попробую.
Кстати заметил, когда восстанавливаю в базу созданную через пгАдмин или Средствами 1с, то вылазиют ошибки про существующие таблицы и тд., а когда создаю базу сreаtedb.exe -U postgres названиебазы, и восстанавливаю pg_restore.exe -U postgres -d названиебазы имя_архива, то потом вываливается out of memory
31 — 19.09.12 — 01:18
дамп размером 600 метров, размер азы в папке постгри 7 гигов.
32 — 19.09.12 — 09:55
(29) А можно ссылочку? И еще вопрос как перенести данные с MS SQL?
33 — 19.09.12 — 10:38
(32) Пожалуйста. http://users.v8.1c.ru/version.jsp?id=AddCompPostgre&ver=9.1.2-1.1C
Если есть доступ, конечно.
Перенос тоже просто, через dt файл.
34 — 19.09.12 — 10:49
(30) Когда база создается через консоль администрирования, в ней создаются таблицы, типы данных и т.д.
Поэтому при восстановлении и появляются ошибки о существующих таблицах.
Попробуй PostgreSQL x64, может поможет с out of memory.
35 — 19.09.12 — 10:51
36 — 19.09.12 — 11:03
(30) http://www.sql.ru/forum/actualthread.aspx?tid=594580
Пишут, что можно поварьировать maintenance_work_mem.
37 — 19.09.12 — 11:55
(33) Спасибо. Нет доступа(
38 — 19.09.12 — 12:47
maintenance_work_mem стоит по умолчанию. Текущее значение 16384. наверно в мегабайтах. хотя оперативки всего 8 гигов. попробую поменять на меньшее значение)
докачаю — выложу куда нибудь сборку постгреса
39 — 19.09.12 — 13:03
40 — 19.09.12 — 13:06
41 — 19.09.12 — 13:14
(40) Спасибо!
42 — 19.09.12 — 13:45
43 — 19.09.12 — 14:09
(42) а постгрес еще надо настраивать? есть ли готовые файлы с оптимальными настройками?)
44 — 19.09.12 — 14:29
(43) В зависимости от ваших конфигураций, размера баз и объема памяти сервера.
Поищите по форуму, были темы по настройке postgresql.conf.
В Интернете тоже много найдется. На сайте Гилева, например.
45 — 19.09.12 — 14:37
(44) Нашел сайт Гилева, почитаю, спасибо.
46 — 19.09.12 — 14:51
47 — 19.09.12 — 15:43
(46) ага, спасибо!
48 — 19.09.12 — 16:25
в продолжение темы про восстановление, на том же сервере есть еще одна база гига на 2 поменьше, бэкапится теми же командами, при восстановлении так же куча ошибок про существующие объекты, возвращает код 1, но в итоге после восстановления она работает.
Пока убедил бухгалтеров что нету копии за август, но найду свободный комп и попробую поднять постгрес на линуксе
DGorgoN
49 — 19.09.12 — 16:33
(48) Виртуалку поставь
Дам делался командой:
pg_dump.exe -i -h localhost -p 5432 -U postgres -w -F c -f «E:BackUp.back» test1
Пробовал так же указывать кодировку дампа параметром -E Windows1251 и UTF-8.
Восстанавливал через pg_admin — восстановилось, но в конце было сообщение примерно следующего содержания: WARNING: Было выявлено 380 ошибок.
Пробовал восстанавливать так:
pg_restore -Upostgres -d «test1» -w -F c -v «E:BackUp.back»
Восстановилась, при полной проверке средствами 1С база вылетает. Выгружаю в dt файл — он весит в 3 раза меньше оригинальной базы.
Восстановление через
psql -Upostgres -W -d test1 -f «E:BackUp.back»
дало аналогичные результаты. Во время восстановления были ошибки «..invalid command..» и «кракозябра».
Блокноту вы, конечно, не забыли сказать, что файл у вас в UTF-8?
Копировал дамп в linux mint и открывал через Kate. Пробовал открыть и в UTF-8 и Windows 1251 и KOI8-ru
Обычно предоставляют больше данных: в каком формате дамп, какой командой восстанавливали, текст ошибок и т.д.
Открыв сам дамп через блокнот увидел что часть текста в нем в виде «кракозябр».
Блокноту вы, конечно, не забыли сказать, что файл у вас в UTF-8?
ЗЫ. Подключите к постгресу либу libtelepathist.so =)
ЗЗЫ. То есть libtelepathist.dll ))
Если с базой работают не круглые сутки, т.е. есть время, когда можно обеспечить монопольный доступ к базе, то я бы бэкапил её средствами самой 1С и не парился.
Давайте по порядку.
На боевом сервере (Как я понял семейство Windows) запускаете cmd.exe от имени администратора.
Далее делаем бекап на «горячую», для этого переходим в папку bin у postgresql, там запускаем pg_dump.exe
т.е.
Будем бекапить в tar.
pg_dump.exe --blobs --verbose --format "tar" --encoding "UTF-8" --username "postgres" --password --port "5432" --file "E:BackUp.back" "DBNAME"
А владелец схемы точно postgres?
После, можете на тестовом сервере БД, можете на этом же боевом. Всё зависит от вашей небезалаберности =).
В документации сказано, что для восстановления бд из бекапа, нужно остановить процесс сервера БД.
Далее_
Создаете новую БД с именем «DBNAME_NEW» — к примеру.
psql —> create database DBNAME_NEW owner postgres encoding ‘UTF8’;
После_
pg_restore.exe —username «postgres» —dbname «DBNAME_NEW» —file «E:BackUp.back»
Пробуем, рассказываем об ошибках.
После создания базы данных я восстанавливаю базу данных в PostgreSQL 8.4 на этой пустой / новой базе данных, используя файл .backup через сценарий (с надлежащей обработкой ошибок). Если возникает какая-либо ошибка, сценарий прерывает весь процесс и помечает процесс как сбойный. При восстановлении базы данных выдается следующая ошибка:
pg_restore: connecting to database for restore
pg_restore: creating SCHEMA public
pg_restore: creating COMMENT SCHEMA public
pg_restore: creating PROCEDURAL LANGUAGE plpgsql
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 302; 2612 16386 PROCEDURAL LANGUAGE plpgsql postgres
pg_restore: [archiver (db)] could not execute query: ERROR: language "plpgsql" already exists
Command was:
CREATE PROCEDURAL LANGUAGE plpgsql;
pg_restore: setting owner and privileges for SCHEMA public
pg_restore: setting owner and privileges for COMMENT SCHEMA public
pg_restore: setting owner and privileges for ACL public
pg_restore: setting owner and privileges for PROCEDURAL LANGUAGE plpgsql
WARNING: errors ignored on restore: 1
Exit code : 1
Я знаю, что эту ошибку следует игнорировать в PostgreSQL 8.x, но поскольку я выполняю ее с помощью сценария, эту проблему необходимо решить, т. Е. Код выхода PostgreSQL должен быть равен 0, в противном случае весь процесс не будет завершен ,
Есть идеи как это сделать?
2 ответа
Лучший ответ
Проработав несколько часов над этой проблемой, я обнаружил, что следующее решение является простым и простым. Базы данных, созданные с помощью команды «CREATE DATABASE», по умолчанию используют стандартную системную базу данных с именем «template1». Вместо этого используйте ‘template0’. Как указано в документе :
Указав CREATE DATABASE скопировать template0 вместо template1, вы можете создать «целевую» пользовательскую базу данных, которая не содержит никаких локальных дополнений в template1. Это особенно удобно при восстановлении дампа pg_dump: сценарий дампа должен быть восстановлен в первичной базе данных, чтобы гарантировать, что каждый воссоздает правильное содержимое базы данных дампа, без каких-либо конфликтов с объектами, которые могли быть добавлены в template1 позже.
3
user
11 Май 2017 в 05:51
Я сомневаюсь, что есть элегантный обходной путь. Все говорят, что сообщение следует игнорировать.
Грязный обходной путь: вставьте DROP LANGUAGE ..
перед pg_restore
и CREATE OR REPLACE LANGUAGE
после (последний, на случай, если в дамп не был включен оператор CREATE)
0
leonbloy
10 Май 2017 в 17:13
Форум программистов Vingrad
Модераторы: LSD |
Поиск: |
|
PostgreSQL 8.2 восстановление backup с ошибкой |
Опции темы |
Иван Человеков |
|
||
Бывалый Профиль
Репутация: нет
|
СУБД PostgreSQL 8.2 cделал утилитой pgAdmin III версия 1.6.2 backup, когда я его пытаюсь восстановить, восстановление идёт с ошибкой:
Подскажите, в чём может быть проблема? |
||
|
|||
tux |
|
||||
Летатель Профиль
Репутация: 2
|
Проблема в том, что в базе объекты (таблицы и т.п.) уже существуют, а ты из скрипта пытаешься создать их заново. Чтобы создать скрипт, который будет удалять объекты прежде чем создавать, можно выполнить следующее:
Здесь dump.sql — файл дампа, а db — имя базы данных. |
||||
|
|||||
Иван Человеков |
|
||||||
Бывалый Профиль
Репутация: нет
|
tux, как я понял бэкапы делать лучше самому руками
Как теперь его восстановить? Получается надо использовать утилиту psql, потому как дамп текстовый(pg_restore — подходит для архивов). Я верно понимаю?
в книге есть так:
Но не получается, как только я не пробовал |
||||||
|
|||||||
tux |
|
||||
Летатель Профиль
Репутация: 2
|
Уже никак не делаю. Но делал именно так. У PostgreSQL инкрементного бэкапа нет, приходится вот таким образом. Так вот выполняешь что не получается?
Почему у тебя база template1? Она системная — шаблон для создания новых баз данных. |
||||
|
|||||
Иван Человеков |
|
||
Бывалый Профиль
Репутация: нет
|
Сделал так:
и получилось Спасибо tux. |
||
|
|||
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | PostgreSQL | Следующая тема » |