From: | pf(at)pfortin(dot)com |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Cc: | Rick Yost <Rick(at)NCDataTeam(dot)org> |
Subject: | Re: pg_dump'ed file contains "DROP DATABASE" |
Date: | 2023-02-20 19:36:39 |
Message-ID: | 20230220143639.2ff966b8@pfortin.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Mon, 20 Feb 2023 11:06:34 -0800 Adrian Klaver wrote:
>On 2/20/23 10:27, pf(at)pfortin(dot)com wrote:
>> [Still a newbie; but learning fast...]
>>
>> Hi,
>>
>> A remote team member is helping out by dumping some of his tables via
>> pgAdmin4 on Windows. My DB is on Linux.
>>
>> The other day, I restored his first file with:
>> pg_restore --host "localhost" --port "5432" --username "postgres"
>> --no-password --dbname "myname" --create --clean --verbose "dumpfile"
>>
>> when I saw this:
>>
>> pg_restore: dropping DATABASE myname
>> Command was: DROP DATABASE myname;
>>
>> pg_restore: error: could not execute query:
>> ERROR: cannot drop the currently open database
>>
>> Digging into the pg_dump'ed files, I see:
>>
>> CREATE DATABASE myname WITH TEMPLATE = template0 ENCODING = 'UTF8'
>> LOCALE_PROVIDER = libc LOCALE = 'English_United States.1252';
>> DROP DATABASE myname;
>> ^^^^^^^^^^^^^^^^^^^^^
I thought the --clean applied to the table being restored. The man page
reads:
-c |||||||
--clean VVVVVVV
Clean (drop) database objects before recreating them. (Unless
--if-exists is used, this might generate some harmless error
messages, if any objects were not present in the destination
vs => database.)
so I took that to mean table; not the entire DB.
Notwithstanding the man page, my take is that the DROP DATABASE statement
needs to be eliminated at pg_dump creation by pgAdmin4. Taking this to
that mailing list.
Thanks Tom & Adrian!
>> Was my 134 table[1] myname DB saved because it was open?
Tom: Yup.
>> If the dump file
>> contains the above statements, how can I be absolutely certain I won't
>> lose the DB?
Tom:
Reading the manual is advisable. --create --clean specifies exactly
that the target database is to be dropped and recreated.
regards, tom lane
>> I'm obviously quite paranoid now...
>
>You will lose the database if you do as the docs specify for -C:
>
>"
>-C
>
>...
>
>When this option is used, the database named with -d is used only to
>issue the initial DROP DATABASE and CREATE DATABASE commands. All data
>is restored into the database name that appears in the archive.
>"
>
>
>It will then be recreated with whatever information is in "dumpfile". If
>that is the same data or new data you want then you are fine. Otherwise
>you will need to be more specific about what you are trying to achieve.
>
>
>>
>> [1] 3 types of tables: ~40%=8.5M rows; ~40%=33M rows; ~20%=varying sizes
>>
>> Thanks,
>> Pierre
>>
>>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Brad White | 2023-02-20 19:42:15 | Is Autovacuum running? |
Previous Message | Adrian Klaver | 2023-02-20 19:06:34 | Re: pg_dump'ed file contains "DROP DATABASE" |