Error language plpgsql already exists

Как устранить ошибку Postgresql 8.4 «язык« plpgsql »уже существует»? После создания базы данных я восстанавливаю базу данных в PostgreSQL 8.4 на этой пустой / новой базе данных, используя файл .backup через сценарий (с надлежащей обработкой ошибок). Если возникает какая-либо ошибка, сценарий прерывает весь процесс и помечает процесс как сбойный. При восстановлении базы данных выдается […]

Содержание

  1. Как устранить ошибку Postgresql 8.4 «язык« plpgsql »уже существует»?
  2. 2 ответа
  3. Восстановление базы 1с Postgress
  4. 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

Иван Человеков
Дата 7.2.2007, 13:12 (ссылка) | (нет голосов) Загрузка .

Бывалый

Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: нет
Всего: 1

СУБД PostgreSQL 8.2 cделал утилитой pgAdmin III версия 1.6.2 backup, когда я его пытаюсь восстановить, восстановление идёт с ошибкой:

Код
C:Program FilespgAdmin III1.6pg_restore.exe -i -h localhost -p 5432 -U postgres -d zpldatabase -v «D:Java_ToolsIDEIdeaProjectszplbackupzpldatabase.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 270; 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 TABLE config
pg_restore: [archiver (db)] Error from TOC entry 1281; 1259 16571 TABLE config postgres
pg_restore: [archiver (db)] could not execute query: ERROR: relation «config» already exists
Command was: CREATE TABLE config (
id integer NOT NULL,
name_firm character varying(45),
stavka_razrada money,
fio_direct.
pg_restore: creating SEQUENCE config_id_seq
pg_restore: [archiver (db)] Error from TOC entry 1280; 1259 16569 SEQUENCE config_id_seq postgres
pg_restore: [archiver (db)] could not execute query: ERROR: relation «config_id_seq» already exists
Command was: CREATE SEQUENCE config_id_seq
START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
pg_restore: creating SEQUENCE OWNED BY config_id_seq
pg_restore: executing SEQUENCE SET config_id_seq
pg_restore: creating TABLE month
pg_restore: [archiver (db)] Error from TOC entry 1277; 1259 16552 TABLE month postgres
pg_restore: [archiver (db)] could not execute query: ERROR: relation «month» already exists
Command was: CREATE TABLE «month» (
id numeric NOT NULL,
dat date
);
pg_restore: creating TABLE person
pg_restore: [archiver (db)] Error from TOC entry 1275; 1259 16545 TABLE person postgres
pg_restore: [archiver (db)] could not execute query: ERROR: relation «person» already exists
Command was: CREATE TABLE person (
id integer NOT NULL,
fio character varying(45),
doljnost character varying(17),
koef_t.
pg_restore: creating SEQUENCE person_id_seq
pg_restore: [archiver (db)] Error from TOC entry 1276; 1259 16547 SEQUENCE person_id_seq postgres
pg_restore: [archiver (db)] could not execute query: ERROR: relation «person_id_seq» already exists
Command was: CREATE SEQUENCE person_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
pg_restore: creating SEQUENCE OWNED BY person_id_seq
pg_restore: executing SEQUENCE SET person_id_seq
pg_restore: creating TABLE zarpl
pg_restore: [archiver (db)] Error from TOC entry 1279; 1259 16561 TABLE zarpl postgres
pg_restore: [archiver (db)] could not execute query: ERROR: relation «zarpl» already exists
Command was: CREATE TABLE zarpl (
id integer NOT NULL,
id_person integer,
id_month integer,
kol_day smallint,
razrad .
pg_restore: creating SEQUENCE zarpl_id_seq
pg_restore: [archiver (db)] Error from TOC entry 1278; 1259 16559 SEQUENCE zarpl_id_seq postgres
pg_restore: [archiver (db)] could not execute query: ERROR: relation «zarpl_id_seq» already exists
Command was: CREATE SEQUENCE zarpl_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
pg_restore: creating SEQUENCE OWNED BY zarpl_id_seq
pg_restore: executing SEQUENCE SET zarpl_id_seq
pg_restore: creating DEFAULT id
pg_restore: creating DEFAULT id
pg_restore: creating DEFAULT id
pg_restore: restoring data for table «config»
pg_restore: restoring data for table «month»
pg_restore: restoring data for table «person»
pg_restore: restoring data for table «zarpl»
pg_restore: [archiver (db)] Error from TOC entry 1625; 0 16561 TABLE DATA zarpl postgres
pg_restore: [archiver (db)] COPY failed: ERROR: duplicate key violates unique constraint «zarpl_pkey»
CONTEXT: COPY zarpl, line 1: «1 N N N N N N N N N N N N N N»
pg_restore: creating CONSTRAINT config_pkey
pg_restore: [archiver (db)] Error from TOC entry 1622; 2606 16575 CONSTRAINT config_pkey postgres
pg_restore: [archiver (db)] could not execute query: ERROR: multiple primary keys for table «config» are not allowed
Command was: ALTER TABLE ONLY config
ADD CONSTRAINT config_pkey PRIMARY KEY (id);
pg_restore: creating CONSTRAINT month_pkey
pg_restore: [archiver (db)] Error from TOC entry 1618; 2606 16558 CONSTRAINT month_pkey postgres
pg_restore: [archiver (db)] could not execute query: ERROR: multiple primary keys for table «month» are not allowed
Command was: ALTER TABLE ONLY «month»
ADD CONSTRAINT month_pkey PRIMARY KEY (id);
pg_restore: creating CONSTRAINT person_pkey
pg_restore: [archiver (db)] Error from TOC entry 1616; 2606 16551 CONSTRAINT person_pkey postgres
pg_restore: [archiver (db)] could not execute query: ERROR: multiple primary keys for table «person» are not allowed
Command was: ALTER TABLE ONLY person
ADD CONSTRAINT person_pkey PRIMARY KEY (id);
pg_restore: creating CONSTRAINT zarpl_pkey
pg_restore: [archiver (db)] Error from TOC entry 1620; 2606 16568 CONSTRAINT zarpl_pkey postgres
pg_restore: [archiver (db)] could not execute query: ERROR: multiple primary keys for table «zarpl» are not allowed
Command was: ALTER TABLE ONLY zarpl
ADD CONSTRAINT zarpl_pkey PRIMARY KEY (id);
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
pg_restore: setting owner and privileges for TABLE config
pg_restore: setting owner and privileges for SEQUENCE config_id_seq
pg_restore: setting owner and privileges for SEQUENCE OWNED BY config_id_seq
pg_restore: setting owner and privileges for TABLE month
pg_restore: setting owner and privileges for TABLE person
pg_restore: setting owner and privileges for SEQUENCE person_id_seq
pg_restore: setting owner and privileges for SEQUENCE OWNED BY person_id_seq
pg_restore: setting owner and privileges for TABLE zarpl
pg_restore: setting owner and privileges for SEQUENCE zarpl_id_seq
pg_restore: setting owner and privileges for SEQUENCE OWNED BY zarpl_id_seq
pg_restore: setting owner and privileges for DEFAULT id
pg_restore: setting owner and privileges for DEFAULT id
pg_restore: setting owner and privileges for DEFAULT id
pg_restore: setting owner and privileges for CONSTRAINT config_pkey
pg_restore: setting owner and privileges for CONSTRAINT month_pkey
pg_restore: setting owner and privileges for CONSTRAINT person_pkey
pg_restore: setting owner and privileges for CONSTRAINT zarpl_pkey
WARNING: errors ignored on restore: 13

Process returned exit code 1.

Подскажите, в чём может быть проблема?
Как Вы делаете бэкап? Может есть альтернативный способ?
Спасибо

tux
Дата 7.2.2007, 13:59 (ссылка) | (нет голосов) Загрузка .

Летатель

Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 2
Всего: 132

Цитата(Иван Человеков @ 7.2.2007, 13:12 )
Подскажите, в чём может быть проблема?

Проблема в том, что в базе объекты (таблицы и т.п.) уже существуют, а ты из скрипта пытаешься создать их заново.

Чтобы создать скрипт, который будет удалять объекты прежде чем создавать, можно выполнить следующее:

Цитата
pg_dump -c -t dump.sql db
Иван Человеков
Дата 8.2.2007, 08:37 (ссылка) | (нет голосов) Загрузка .

Бывалый

Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: нет
Всего: 1

Код
pg_dump -u -c zpldatabase > d:db.sql

Как теперь его восстановить? Получается надо использовать утилиту psql, потому как дамп текстовый(pg_restore — подходит для архивов). Я верно понимаю?
Пробовал так:

Код
psql -U manager -f booktown.sql templatel

Но не получается, как только я не пробовал
Покажи пожалуйста как ты обычно делаешь бэкапы с заменой всего данных и структуры таблицы
Спасибо за помощь

tux
Дата 8.2.2007, 09:00 (ссылка) | (нет голосов) Загрузка .

Летатель

Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 2
Всего: 132

Цитата(Иван Человеков @ 8.2.2007, 08:37 )
Покажи пожалуйста как ты обычно делаешь бэкапы с заменой всего данных и структуры таблицы smile
Цитата
psql -U manager -f booktown.sql templatel
Иван Человеков
Дата 8.2.2007, 09:23 (ссылка) | (нет голосов) Загрузка .

Бывалый

Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: нет
Всего: 1

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »

[ Время генерации скрипта: 0.1255 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Adblock
detector

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

user's user avatar

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

user's user avatar

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

leonbloy's user avatar

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
   Sergio-ps

17.09.12 — 19:09

Добрый вечер. на Win Server 2003 установлен сервер 1с, PostgreSQL.

Делаются резервные копии каждый день. Но столкнулся с проблемой. необходимо восстановить базу  на определенное число, а он при восстановлении выдает кучу ошибок на то что таблица существует, метод существует и тд , невозможно перезаписать. и в итоге Процесс вернул код выхода 1.

Соответсвенно в пустую базу он ничего не восстанавливает, она остается пустой. пробовал как создавать новую базу из управления серверами 1с, так и средствами postgres.

   Sergio-ps

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 сначала очистить надо. Или удалить, а потом — опять создать.

   Ben_art

3 — 17.09.12 — 19:39

схему дропни или только таблицы

   Sergio-ps

4 — 17.09.12 — 20:32

Я пустую базу создаю и в нее пытаюсь восстанавливать, наверно не имеет значения что у нее имя другое?

   ansh15

5 — 17.09.12 — 21:51

(4) Не имеет.

Попробуйте без флага -с в созданную пустую базу. Сейчас проверял, с флагом -с (-c —clean Clean (drop) database objects before recreating them) выдает ошибки, без него нормально восстанавливает.

   Sergio-ps

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.

   ansh15

7 — 17.09.12 — 22:54

А базу чем создаете? Из консоли администрирования 1С? Или в PgAdmin?

   Sergio-ps

8 — 17.09.12 — 23:26

уже и тем и другим способом пробовал. Все равно не восстанавливает. причем пробовал уже и другой архив брать, тоже самое. может не правильная команда создания копии?

   ansh15

9 — 18.09.12 — 10:17

Посомтри содержимое архива, вдруг он текстовый, блокнотом каким-нибудь.

Архив, созданный с флагом «-F c» начинается со слова PGDUMP, текстовый начинается со строк



— PostgreSQL database dump



и дальше команды SQL. Можно попробовать явно задать custom формат в pg_restore «-F c». Кстати, у тебя в командной строке «-Fc», без пробела, может в Windows как-то влияет, в Linux без разницы.

   Sergio-ps

10 — 18.09.12 — 11:54

Хорошо, попытаюсь посмотреть, уже 5 минут WordPad открывает.

Кстати, не могли бы выложить рабочую комбинацию команд архивации и восстановления. на будущее хотя бы поменять. потому как походу ни один архив не восстанавливается.

   Sergio-ps

11 — 18.09.12 — 12:29

архив начинается с

PGDMP

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

Кстакти вот например строка

2200 — public — SCHEMA  T CREATE SCHEMA public;

?I DROP SCHEMA public;

o postgres | false

странно как то, получается он сначала создает а потом удаляет?

   Sergio-ps

12 — 18.09.12 — 12:36

и интересно что значит строчка

postgres | false? там много таких, или User1c | false. что то с пользователями связано

   ansh15

13 — 18.09.12 — 12:36

Базу рукам попробуй создать, в командной строке на сервере. creаtedb.exe -U postgres testbuh1, например.

Потом pg_restore.exe -U postgres -d testbuh1 имя_архива.

   Sergio-ps

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

В итоге база не запускается. конфигуратор открывается но видит пустую конфигурацию

   Sergio-ps

15 — 18.09.12 — 14:06

если только попробовать загрузить сначала в базу дтшник старый, а потом попробовать через постгрес восстановить только данные?

   BigHarry

16 — 18.09.12 — 15:20

«COPY failed: ERROR:  out of memory» — проходили, вылечили только загрузкой дампа в постгри, установленный на линуксе, на виндовый постгря дамп упорно не хотел заливаться, вылезала «out of memory»,  никакие манипуляции с конфигом не помогали.

   BigHarry

17 — 18.09.12 — 15:22

А корень зла — бинарники, хранимые в БД, большие фотографии или pdf-ки…

   Sergio-ps

18 — 18.09.12 — 15:56

Бухгалтерия предприятия. вроде нет файлов. если только документы.

   Sergio-ps

19 — 18.09.12 — 15:58

а на виртуалке если поднять постгри, думаете поможет?

   Sergio-ps

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 в работоспособную бухгалтерию за июль

   Sergio-ps

21 — 18.09.12 — 16:21

и соответственно новых данных не появляется

   BigHarry

22 — 18.09.12 — 16:30

(19) Я на виртуалке не стал развертывать, ибо винда и железо было только 32 разрядное, просто на какой-то ближайшей рабочей станции установил линукс и слона.

Не знаю, может вам имеет смысл попробовать установить 64-битный постгри и там развернуть архив, если, канечно, есть где-то такая сборка с патчами 1С под винду…

   alxbzm

23 — 18.09.12 — 16:46

Я бы посоветовал взять 9-й постгри и попробовать на нем (в том числе и утилиты pg_dump / pg_restore соответствующих версий)… Я тут неоднократно писал про чудеса 8.4.x. У меня сейчас крутится 9.1.2 от 1С — вроде полет нормальный — и с бэкапом, и с восстановлением.

   Sergio-ps

24 — 18.09.12 — 17:41

поставил 9,1,2 постгри, пытаюсь туда восстановить. посмотрим

   Sergio-ps

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.

   BigHarry

26 — 18.09.12 — 19:33

Сильно большой у вас дамп?

   глазковыколупыватель

27 — 18.09.12 — 20:15

+ (26) Давай дамп, выкладывай куда-нить.

   alxbzm

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 — хотя это тоже не принципиально — можно потом командную строку срисовать из графического интерфейса.

   ansh15

29 — 18.09.12 — 23:05

(22) >>Не знаю, может вам имеет смысл попробовать установить 64-битный постгри и там развернуть архив, если, канечно, есть где-то такая сборка с патчами 1С под винду…

Есть. На пользовательском сайте 1С.

   Sergio-ps

30 — 19.09.12 — 01:16

Выгрузить базу в dt я конечно могу, но бухгалтерам вот приспичило восстановить от 1го августа. че то они там удалили потом нечаянно. поэтому и мучаюсь с этим дампом, т.к. нету других копий за те числа.

64 юитный постгри.. попробую.

Кстати заметил, когда восстанавливаю в базу созданную через пгАдмин или Средствами 1с, то вылазиют ошибки про существующие таблицы и тд., а когда создаю базу сreаtedb.exe -U postgres названиебазы, и восстанавливаю  pg_restore.exe -U postgres -d названиебазы имя_архива, то потом вываливается out of memory

   Sergio-ps

31 — 19.09.12 — 01:18

дамп размером 600 метров, размер азы в папке постгри 7 гигов.

   zzhiraf

32 — 19.09.12 — 09:55

(29) А можно ссылочку? И еще вопрос как перенести данные с MS SQL?

   ansh15

33 — 19.09.12 — 10:38

(32) Пожалуйста. http://users.v8.1c.ru/version.jsp?id=AddCompPostgre&ver=9.1.2-1.1C

Если есть доступ, конечно.

Перенос тоже просто, через dt файл.

   ansh15

34 — 19.09.12 — 10:49

(30) Когда база создается через консоль администрирования, в ней создаются таблицы, типы данных и т.д.

Поэтому при восстановлении и появляются ошибки о существующих таблицах.

Попробуй PostgreSQL x64, может поможет с out of memory.

   ansh15

35 — 19.09.12 — 10:51

   ansh15

36 — 19.09.12 — 11:03

(30) http://www.sql.ru/forum/actualthread.aspx?tid=594580

Пишут, что можно поварьировать maintenance_work_mem.

   zzhiraf

37 — 19.09.12 — 11:55

(33) Спасибо. Нет доступа(

   Sergio-ps

38 — 19.09.12 — 12:47

maintenance_work_mem стоит по умолчанию. Текущее значение 16384. наверно в мегабайтах. хотя оперативки всего 8 гигов. попробую поменять на меньшее значение)

докачаю — выложу куда нибудь сборку постгреса

   Sergio-ps

39 — 19.09.12 — 13:03

   Sergio-ps

40 — 19.09.12 — 13:06

   zzhiraf

41 — 19.09.12 — 13:14

(40) Спасибо!

   ansh15

42 — 19.09.12 — 13:45

   zzhiraf

43 — 19.09.12 — 14:09

(42) а постгрес еще надо настраивать? есть ли готовые файлы с оптимальными настройками?)

   ansh15

44 — 19.09.12 — 14:29

(43) В зависимости от ваших конфигураций, размера баз и объема памяти сервера.

Поищите по форуму, были темы по настройке postgresql.conf.

В Интернете тоже много найдется. На сайте Гилева, например.

   zzhiraf

45 — 19.09.12 — 14:37

(44) Нашел сайт Гилева, почитаю, спасибо.

   ansh15

46 — 19.09.12 — 14:51

   zzhiraf

47 — 19.09.12 — 15:43

(46) ага, спасибо!

   Sergio-ps

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 с ошибкой 

V

   

Опции темы

Иван Человеков
  Дата 7.2.2007, 13:12 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: нет
Всего: 1

СУБД PostgreSQL 8.2 cделал утилитой pgAdmin III версия 1.6.2 backup, когда я его пытаюсь восстановить, восстановление идёт с ошибкой:

Код

C:Program FilespgAdmin III1.6pg_restore.exe -i -h localhost -p 5432 -U postgres -d zpldatabase -v "D:Java_ToolsIDEIdeaProjectszplbackupzpldatabase.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 270; 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 TABLE config
pg_restore: [archiver (db)] Error from TOC entry 1281; 1259 16571 TABLE config postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "config" already exists
    Command was: CREATE TABLE config (
    id integer NOT NULL,
    name_firm character varying(45),
    stavka_razrada money,
    fio_direct...
pg_restore: creating SEQUENCE config_id_seq
pg_restore: [archiver (db)] Error from TOC entry 1280; 1259 16569 SEQUENCE config_id_seq postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "config_id_seq" already exists
    Command was: CREATE SEQUENCE config_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;
pg_restore: creating SEQUENCE OWNED BY config_id_seq
pg_restore: executing SEQUENCE SET config_id_seq
pg_restore: creating TABLE month
pg_restore: [archiver (db)] Error from TOC entry 1277; 1259 16552 TABLE month postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "month" already exists
    Command was: CREATE TABLE "month" (
    id numeric NOT NULL,
    dat date
);
pg_restore: creating TABLE person
pg_restore: [archiver (db)] Error from TOC entry 1275; 1259 16545 TABLE person postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "person" already exists
    Command was: CREATE TABLE person (
    id integer NOT NULL,
    fio character varying(45),
    doljnost character varying(17),
    koef_t...
pg_restore: creating SEQUENCE person_id_seq
pg_restore: [archiver (db)] Error from TOC entry 1276; 1259 16547 SEQUENCE person_id_seq postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "person_id_seq" already exists
    Command was: CREATE SEQUENCE person_id_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;
pg_restore: creating SEQUENCE OWNED BY person_id_seq
pg_restore: executing SEQUENCE SET person_id_seq
pg_restore: creating TABLE zarpl
pg_restore: [archiver (db)] Error from TOC entry 1279; 1259 16561 TABLE zarpl postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "zarpl" already exists
    Command was: CREATE TABLE zarpl (
    id integer NOT NULL,
    id_person integer,
    id_month integer,
    kol_day smallint,
    razrad ...
pg_restore: creating SEQUENCE zarpl_id_seq
pg_restore: [archiver (db)] Error from TOC entry 1278; 1259 16559 SEQUENCE zarpl_id_seq postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "zarpl_id_seq" already exists
    Command was: CREATE SEQUENCE zarpl_id_seq
    INCREMENT BY 1
    NO MAXVALUE
    NO MINVALUE
    CACHE 1;
pg_restore: creating SEQUENCE OWNED BY zarpl_id_seq
pg_restore: executing SEQUENCE SET zarpl_id_seq
pg_restore: creating DEFAULT id
pg_restore: creating DEFAULT id
pg_restore: creating DEFAULT id
pg_restore: restoring data for table "config"
pg_restore: restoring data for table "month"
pg_restore: restoring data for table "person"
pg_restore: restoring data for table "zarpl"
pg_restore: [archiver (db)] Error from TOC entry 1625; 0 16561 TABLE DATA zarpl postgres
pg_restore: [archiver (db)] COPY failed: ERROR:  duplicate key violates unique constraint "zarpl_pkey"
CONTEXT:  COPY zarpl, line 1: "1    N    N    N    N    N    N    N    N    N    N    N    N    N    N"
pg_restore: creating CONSTRAINT config_pkey
pg_restore: [archiver (db)] Error from TOC entry 1622; 2606 16575 CONSTRAINT config_pkey postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  multiple primary keys for table "config" are not allowed
    Command was: ALTER TABLE ONLY config
    ADD CONSTRAINT config_pkey PRIMARY KEY (id);
pg_restore: creating CONSTRAINT month_pkey
pg_restore: [archiver (db)] Error from TOC entry 1618; 2606 16558 CONSTRAINT month_pkey postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  multiple primary keys for table "month" are not allowed
    Command was: ALTER TABLE ONLY "month"
    ADD CONSTRAINT month_pkey PRIMARY KEY (id);
pg_restore: creating CONSTRAINT person_pkey
pg_restore: [archiver (db)] Error from TOC entry 1616; 2606 16551 CONSTRAINT person_pkey postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  multiple primary keys for table "person" are not allowed
    Command was: ALTER TABLE ONLY person
    ADD CONSTRAINT person_pkey PRIMARY KEY (id);
pg_restore: creating CONSTRAINT zarpl_pkey
pg_restore: [archiver (db)] Error from TOC entry 1620; 2606 16568 CONSTRAINT zarpl_pkey postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  multiple primary keys for table "zarpl" are not allowed
    Command was: ALTER TABLE ONLY zarpl
    ADD CONSTRAINT zarpl_pkey PRIMARY KEY (id);
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
pg_restore: setting owner and privileges for TABLE config
pg_restore: setting owner and privileges for SEQUENCE config_id_seq
pg_restore: setting owner and privileges for SEQUENCE OWNED BY config_id_seq
pg_restore: setting owner and privileges for TABLE month
pg_restore: setting owner and privileges for TABLE person
pg_restore: setting owner and privileges for SEQUENCE person_id_seq
pg_restore: setting owner and privileges for SEQUENCE OWNED BY person_id_seq
pg_restore: setting owner and privileges for TABLE zarpl
pg_restore: setting owner and privileges for SEQUENCE zarpl_id_seq
pg_restore: setting owner and privileges for SEQUENCE OWNED BY zarpl_id_seq
pg_restore: setting owner and privileges for DEFAULT id
pg_restore: setting owner and privileges for DEFAULT id
pg_restore: setting owner and privileges for DEFAULT id
pg_restore: setting owner and privileges for CONSTRAINT config_pkey
pg_restore: setting owner and privileges for CONSTRAINT month_pkey
pg_restore: setting owner and privileges for CONSTRAINT person_pkey
pg_restore: setting owner and privileges for CONSTRAINT zarpl_pkey
WARNING: errors ignored on restore: 13

Process returned exit code 1.

Подскажите, в чём может быть проблема? 
Как Вы делаете бэкап? Может есть альтернативный способ? smile
Спасибо smile

PM ICQ   Вверх
tux
Дата 7.2.2007, 13:59 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Летатель
***

Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 2
Всего: 132

Цитата(Иван Человеков @  7.2.2007,  13:12 Найти цитируемый пост)
Подскажите, в чём может быть проблема? 

Проблема в том, что в базе объекты (таблицы и т.п.) уже существуют, а ты из скрипта пытаешься создать их заново. 

Чтобы создать скрипт, который будет удалять объекты прежде чем создавать, можно выполнить следующее:

Цитата
pg_dump -c -t dump.sql db

Здесь dump.sql — файл дампа, а db — имя базы данных.

PM MAIL Skype GTalk Jabber YIM   Вверх
Иван Человеков
  Дата 8.2.2007, 08:37 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: нет
Всего: 1

tux,  как я понял бэкапы делать лучше самому руками smile
Получилось у меня так сделать бэкап:

Код

pg_dump -u -c zpldatabase > d:db.sql

Как теперь его восстановить? Получается надо использовать утилиту psql, потому как дамп текстовый(pg_restore — подходит для архивов). Я верно понимаю? smile 
Пробовал так:

Код

psql "d:db.sql" template1

в книге есть так:

Код

psql -U manager -f booktown.sql templatel 

Но не получается, как только я не пробовал smile 
Покажи пожалуйста как ты обычно делаешь бэкапы с заменой всего данных и структуры таблицы smile
Спасибо за помощь smile

PM ICQ   Вверх
tux
Дата 8.2.2007, 09:00 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Летатель
***

Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 2
Всего: 132

Цитата(Иван Человеков @  8.2.2007,  08:37 Найти цитируемый пост)
Покажи пожалуйста как ты обычно делаешь бэкапы с заменой всего данных и структуры таблицы smile

Уже никак не делаю. Но делал именно так. У PostgreSQL инкрементного бэкапа нет, приходится вот таким образом. Так вот выполняешь что не получается?

Цитата
psql -U manager -f booktown.sql templatel 

Почему у тебя база template1? Она системная — шаблон для создания новых баз данных.

PM MAIL Skype GTalk Jabber YIM   Вверх
Иван Человеков
Дата 8.2.2007, 09:23 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Бывалый
*

Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: нет
Всего: 1

Сделал так:

Код

psql -U zpldatabase < "d:db.sql"

и получилось smile Спасибо tux.

PM ICQ   Вверх



















Ответ в темуСоздание новой темы
Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »

Понравилась статья? Поделить с друзьями:
  • Error language german found when expecting spanish
  • Error l6406e no space in execution regions with any selector matching main o bss
  • Error l6235e more than one section matches selector cannot all be first last
  • Error l6218e undefined symbol main referred from rtentry2 o
  • Error l6218e undefined symbol apbpresctable