Re: pg_restore error on function
Re: pg_restore error on function
От:
Post Gresql <postgresql@taljaren.se>
Дата:
On 2022-11-03 15:43, Adrian Klaver wrote: > On 11/3/22 07:28, Post Gresql wrote: >> Hello >> >> I first successfully ran >> >> pg_dump -U postgres -b -E UTF8 -f my_dump --format=custom -n my_schema --no-owner -v my_db >> >> but then >> >> pg_restore --single-transaction -v -U postgres -O -e -d my_other_db my_dump >> >> failed with >> >> pg_restore: connecting to database for restore >> pg_restore: creating FUNCTION "my_schema.update_b()" >> pg_restore: [archiver (db)] Error while PROCESSING TOC: >> pg_restore: [archiver (db)] Error from TOC entry 7142; 1255 8618854 FUNCTION update_b() previous_owner >> pg_restore: [archiver (db)] could not execute query: ERROR: schema my_schema" does not exist >> Command was: CREATE FUNCTION "my_schema".update_b() RETURNS void >> LANGUAGE plpgsql >> AS $$ >> BEGIN >> PERFORM pg_advisory_xact_lock(1); >> >> INSERT INTO ...; >> END; >> $$; >> >> >> This is PG version 10.19 >> >> Is there a solution for this (apart from upgrading to a newer PG version)? > > Was there another error before this? > > Did the -v show the schema my_schema being created? No there were no other output apart from what I showed above. No, no mention of creating the schema. Btw. it worked fine when I used plain text output and moved the part of creating the function to near the end of the dump file. Could it be that the create function . in the dump file does not implicitly create the schema as a create table .
Re: pg_restore error on function
От:
Tom Lane <tgl@sss.pgh.pa.us>
Дата:
"David G. Johnston" writes: > On Thu, Nov 3, 2022 at 8:39 AM Post Gresql wrote: >> Could it be that the >> create function . >> in the dump file does not implicitly create the schema as a >> create table .
Re: pg_restore error on function
От:
Adrian Klaver <adrian.klaver@aklaver.com>
Дата:
On 11/3/22 08:38, Post Gresql wrote:
>
> On 2022-11-03 15:43, Adrian Klaver wrote:
>> On 11/3/22 07:28, Post Gresql wrote:
>>> Hello
>>>
>>> I first successfully ran
>>>
>>> pg_dump -U postgres -b -E UTF8 -f my_dump --format=custom -n
>>> my_schema --no-owner -v my_db
>>>
>>> but then
>>>
>>> pg_restore --single-transaction -v -U postgres -O -e -d my_other_db
>>> my_dump
>>>
>>> failed with
>>>
>>> pg_restore: connecting to database for restore
>>> pg_restore: creating FUNCTION "my_schema.update_b()"
>>> pg_restore: [archiver (db)] Error while PROCESSING TOC:
>>> pg_restore: [archiver (db)] Error from TOC entry 7142; 1255 8618854
>>> FUNCTION update_b() previous_owner
>>> pg_restore: [archiver (db)] could not execute query: ERROR: schema
>>> my_schema" does not exist
>>> Command was: CREATE FUNCTION "my_schema".update_b() RETURNS void
>>> LANGUAGE plpgsql
>>> AS $$
>>> BEGIN
>>> PERFORM pg_advisory_xact_lock(1);
>>>
>>> INSERT INTO ...;
>>> END;
>>> $$;
>>>
>>>
>>> This is PG version 10.19
>>>
>>> Is there a solution for this (apart from upgrading to a newer PG
>>> version)?
>>
>> Was there another error before this?
>>
>> Did the -v show the schema my_schema being created?
>
>
> No there were no other output apart from what I showed above.
The -v to pg_restore should output the progress:
https://www.postgresql.org/docs/current/app-pgrestore.html
-v
--verbose
Specifies verbose mode. This will cause pg_restore to output
detailed object comments and start/stop times to the output file, and
progress messages to standard error. Repeating the option causes
additional debug-level messages to appear on standard error.
Something like:
pg_dump -d test -U postgres -Fc -n test -f test_sch.out
pg_restore -d t -U postgres -v test_sch.out
pg_restore: connecting to database for restore
pg_restore: creating SCHEMA "test"
pg_restore: creating TABLE "test.c2"
pg_restore: creating TABLE "test.supplies"
pg_restore: creating SEQUENCE "test.supplies_id_seq"
pg_restore: creating SEQUENCE OWNED BY "test.supplies_id_seq"
pg_restore: creating TABLE "test.up_test"
pg_restore: creating DEFAULT "test.supplies id"
pg_restore: processing data for table "test.c2"
pg_restore: processing data for table "test.supplies"
pg_restore: processing data for table "test.up_test"
pg_restore: executing SEQUENCE SET supplies_id_seq
pg_restore: creating CONSTRAINT "test.c2 pk1"
pg_restore: creating CONSTRAINT "test.supplies supplies_pkey"
>
> No, no mention of creating the schema.
As you see the schema was created first.
>
>
> Btw. it worked fine when I used plain text output and moved the part of
> creating the function to near the end of the dump file.
>
> Could it be that the
>
> create function .
Well the schema should have already been created.
Assuming this:
pg_restore: connecting to database for restore
pg_restore: creating FUNCTION "my_schema.update_b()"
was not the result of an edit then something is not working correctly.
What is my_schema.update_b() doing?
>
> in the dump file does not implicitly create the schema as a
>
> create table .Re: pg_restore error on function
От:
Ron <ronljohnsonjr@gmail.com>
Дата:
On 11/3/22 09:57, Adrian Klaver wrote: > On 11/3/22 07:45, Ron wrote: >> On 11/3/22 09:28, Post Gresql wrote: >>> Hello >>> >>> I first successfully ran >>> >>> pg_dump -U postgres -b -E UTF8 -f my_dump --format=custom -n my_schema >>> --no-owner -v my_db >>> > >> What was the *complete* pg_dump command? > > I'm going to say the above. I'm embarrassed. -- Angular momentum makes the world go 'round.
pg_restore error on function
От:
Post Gresql <postgresql@taljaren.se>
Дата:
Hello
I first successfully ran
pg_dump -U postgres -b -E UTF8 -f my_dump --format=custom -n my_schema --no-owner -v my_db
but then
pg_restore --single-transaction -v -U postgres -O -e -d my_other_db my_dump
failed with
pg_restore: connecting to database for restore
pg_restore: creating FUNCTION "my_schema.update_b()"
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 7142; 1255 8618854 FUNCTION update_b() previous_owner
pg_restore: [archiver (db)] could not execute query: ERROR: schema my_schema" does not exist
Command was: CREATE FUNCTION "my_schema".update_b() RETURNS void
LANGUAGE plpgsql
AS $$
BEGIN
PERFORM pg_advisory_xact_lock(1);
INSERT INTO ...;
END;
$$;
This is PG version 10.19
Is there a solution for this (apart from upgrading to a newer PG version)?
The only workaround I can think of is to dump in plain text and then edit the dump file.
Re: pg_restore error on function
От:
Ron <ronljohnsonjr@gmail.com>
Дата:
On 11/3/22 09:28, Post Gresql wrote:
What was the complete pg_dump command?
Hello
I first successfully ran
pg_dump -U postgres -b -E UTF8 -f my_dump --format=custom -n my_schema --no-owner -v my_db
but then
pg_restore --single-transaction -v -U postgres -O -e -d my_other_db my_dump
failed with
pg_restore: connecting to database for restore
pg_restore: creating FUNCTION "my_schema.update_b()"
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 7142; 1255 8618854 FUNCTION update_b() previous_owner
pg_restore: [archiver (db)] could not execute query: ERROR: schema my_schema" does not exist
Command was: CREATE FUNCTION "my_schema".update_b() RETURNS void
LANGUAGE plpgsql
AS $$
BEGIN
PERFORM pg_advisory_xact_lock(1);
INSERT INTO ...;
END;
$$;
This is PG version 10.19
Is there a solution for this (apart from upgrading to a newer PG version)?
What was the complete pg_dump command?
--
Angular momentum makes the world go 'round.
Angular momentum makes the world go 'round.
Re: pg_restore error on function
От:
Adrian Klaver <adrian.klaver@aklaver.com>
Дата:
On 11/3/22 07:28, Post Gresql wrote: > Hello > > I first successfully ran > > pg_dump -U postgres -b -E UTF8 -f my_dump --format=custom -n my_schema > --no-owner -v my_db > > but then > > pg_restore --single-transaction -v -U postgres -O -e -d my_other_db my_dump > > failed with > > pg_restore: connecting to database for restore > pg_restore: creating FUNCTION "my_schema.update_b()" > pg_restore: [archiver (db)] Error while PROCESSING TOC: > pg_restore: [archiver (db)] Error from TOC entry 7142; 1255 8618854 > FUNCTION update_b() previous_owner > pg_restore: [archiver (db)] could not execute query: ERROR: schema > my_schema" does not exist > Command was: CREATE FUNCTION "my_schema".update_b() RETURNS void > LANGUAGE plpgsql > AS $$ > BEGIN > PERFORM pg_advisory_xact_lock(1); > > INSERT INTO ...; > END; > $$; > > > This is PG version 10.19 > > Is there a solution for this (apart from upgrading to a newer PG version)? Was there another error before this? Did the -v show the schema my_schema being created? > > The only workaround I can think of is to dump in plain text and then > edit the dump file. > > -- Adrian Klaver adrian.klaver@aklaver.com
Re: pg_restore error on function
От:
Adrian Klaver <adrian.klaver@aklaver.com>
Дата:
On 11/3/22 07:45, Ron wrote: > On 11/3/22 09:28, Post Gresql wrote: >> Hello >> >> I first successfully ran >> >> pg_dump -U postgres -b -E UTF8 -f my_dump --format=custom -n my_schema >> --no-owner -v my_db >> > What was the *complete* pg_dump command? I'm going to say the above. -- Adrian Klaver adrian.klaver@aklaver.com
Re: pg_restore error on function
От:
"David G. Johnston" <david.g.johnston@gmail.com>
Дата:
On Thu, Nov 3, 2022 at 8:39 AM Post Gresql <postgresql@taljaren.se> wrote:
On 2022-11-03 15:43, Adrian Klaver wrote:
> On 11/3/22 07:28, Post Gresql wrote:
>> Hello
>>
>> I first successfully ran
>>
>> pg_dump -U postgres -b -E UTF8 -f my_dump --format=custom -n my_schema --no-owner -v my_db
>>
>> but then
>>
>> pg_restore --single-transaction -v -U postgres -O -e -d my_other_db my_dump
>>
>> failed with
>>
>> pg_restore: connecting to database for restore
>> pg_restore: creating FUNCTION "my_schema.update_b()"
>> pg_restore: [archiver (db)] Error while PROCESSING TOC:
>> pg_restore: [archiver (db)] Error from TOC entry 7142; 1255 8618854 FUNCTION update_b() previous_owner
>> pg_restore: [archiver (db)] could not execute query: ERROR: schema my_schema" does not exist
>> Command was: CREATE FUNCTION "my_schema".update_b() RETURNS void
>> LANGUAGE plpgsql
>> AS $$
>> BEGIN
>> PERFORM pg_advisory_xact_lock(1);
>>
>> INSERT INTO ...;
>> END;
>> $$;
>>
>>
>> This is PG version 10.19
>>
>> Is there a solution for this (apart from upgrading to a newer PG version)?
>
> Was there another error before this?
>
> Did the -v show the schema my_schema being created?
No there were no other output apart from what I showed above.
No, no mention of creating the schema.
Btw. it worked fine when I used plain text output and moved the part of creating the function to near the end of the dump file.
Could it be that the
create function <schema>.<function name>
in the dump file does not implicitly create the schema as a
create table <schema>.<table name>
would?
I don't know where you got the idea that a schema is implicitly created via create table...a schema is never implicitly created.
It is unlikely, though possible (casts were just fixed in 10.20), that you've discovered a dependency tracking bug. At this point you would need to produce and show a self-contained test case to provide further help. The information you have shown so far indeed looks problematic but insufficient to diagnose further.
pg_dump -n schema is documented to dump both the schema and its objects so pg_restore should be restoring both, and should be restoring schemas before trying to restore most anything else.
You could try playing with pg_restore -L and try to get a sequence that works.
David J.
Re: pg_restore error on function
От:
Post Gresql <postgresql@taljaren.se>
Дата:
On 2022-11-03 15:57, Adrian Klaver wrote: > On 11/3/22 07:45, Ron wrote: >> On 11/3/22 09:28, Post Gresql wrote: >>> Hello >>> >>> I first successfully ran >>> >>> pg_dump -U postgres -b -E UTF8 -f my_dump --format=custom -n my_schema --no-owner -v my_db >>> > >> What was the *complete* pg_dump command? > > I'm going to say the above. > That is the complete command (actual names redacted)