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
dumpfile.
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?
>
>>
>> The only workaround I can think of is to dump in plain text and then edit the dump file.
>>
>>
>