Search Postgresql Archives

Re: pg_dump'ed file contains "DROP DATABASE"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 20 Feb 2023 11:06:34 -0800 Adrian Klaver wrote:

>On 2/20/23 10:27, pf@xxxxxxxxxxx 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
>> 
>>   
>





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux