Обсуждение: pg_restore error

Поиск
Список
Период
Сортировка

pg_restore error

От
Scott Frankel
Дата:
What does this error mean?

    pg_restore: [tar archiver] could not find header for file 1765.dat
in tar archive


All of a sudden, I'm encountering this error as I debug a problem
with the db interface I'm using.  My backups are created using a
script that hasn't changed recently, though I have just upgraded OS
from MacOSX v10.4.2. to 10.4.3.  My backup script executes:

    pg_dump -Ft -b -v source_name > output_name

Verbose output yields no error messages.

MacOSX v10.4.3
PostgreSQL v8.1.0
Psycopg2 v2.0b5


Any suggestions?

Thanks in advance!
Scott


Re: pg_restore error

От
Tom Lane
Дата:
Scott Frankel <leknarf@pacbell.net> writes:
> What does this error mean?
>     pg_restore: [tar archiver] could not find header for file 1765.dat
> in tar archive

It means either the tar file is corrupt or pg_restore has a bug.

Can tar read the file correctly?  If so, does it find a file named
1765.dat therein?

(Historically, the tar code in pg_dump/pg_restore has not been as
well debugged as the custom format, so you might want to just use
-Fc instead.  If you're really intent on using -Ft, be prepared to
help us debug it.)

            regards, tom lane

Re: pg_restore error

От
Scott Frankel
Дата:
Yes, the tar file contains a file called 1765.dat.  A `cat` of that
file shows nothing more than an empty line (i.e.: a carriage return).

    -rw-------   1 frankel  prod        1 Nov 29 11:20 1765.dat

Extracting the archive, tar reported a "lone zero block."  I don't
know what this refers to.

    tar: A lone zero block at 9242

I'm happy to either help debug Ft or switch to Fc in my scripts.  I
was under the impression, though, that Ft was required to backup db's
with blobs.  I am storing some thumbnail jpg images in my db.

I'd also be interested to know if the pg_restore error is due to my
upgrade to postgres 8.1 or macosx 10.4.3.

Thanks
Scott




On Dec 1, 2005, at 4:47 PM, Tom Lane wrote:

> Scott Frankel <leknarf@pacbell.net> writes:
>> What does this error mean?
>>     pg_restore: [tar archiver] could not find header for file 1765.dat
>> in tar archive
>
> It means either the tar file is corrupt or pg_restore has a bug.
>
> Can tar read the file correctly?  If so, does it find a file named
> 1765.dat therein?
>
> (Historically, the tar code in pg_dump/pg_restore has not been as
> well debugged as the custom format, so you might want to just use
> -Fc instead.  If you're really intent on using -Ft, be prepared to
> help us debug it.)
>
>             regards, tom lane
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings


Re: pg_restore error

От
Tom Lane
Дата:
Scott Frankel <leknarf@pacbell.net> writes:
> Yes, the tar file contains a file called 1765.dat.  A `cat` of that
> file shows nothing more than an empty line (i.e.: a carriage return).

>     -rw-------   1 frankel  prod        1 Nov 29 11:20 1765.dat

> Extracting the archive, tar reported a "lone zero block."  I don't
> know what this refers to.

Hmm, how big is the tarfile, and would you be willing to send it to me?

> I'm happy to either help debug Ft or switch to Fc in my scripts.  I
> was under the impression, though, that Ft was required to backup db's
> with blobs.  I am storing some thumbnail jpg images in my db.

Either -Fc or -Ft can handle blobs ... and actually, in 8.1 the issue
is gone entirely because plain text pg_dump can too.

> I'd also be interested to know if the pg_restore error is due to my
> upgrade to postgres 8.1 or macosx 10.4.3.

Your guess is as good as mine at the moment.  One thought that comes to
mind --- did you move the tarfile across machines at any point, and if
so could it have been munged by a Unix/DOS newline conversion?

            regards, tom lane

Re: pg_restore error

От
Scott Frankel
Дата:
Using custom output format instead of tar output (-Fc instead if -Ft)
appears to work without error.  My initial tests with the backup db
seem to match the original db.

The compressed output files are also a lot smaller ;)

Note that the problematic tar files were never transfered between
platforms.  They are written to a local disk and are accessed
directly from that location.

Thanks for the info!
Scott


On Dec 1, 2005, at 8:02 PM, Tom Lane wrote:

> Scott Frankel <leknarf@pacbell.net> writes:
>> Yes, the tar file contains a file called 1765.dat.  A `cat` of that
>> file shows nothing more than an empty line (i.e.: a carriage return).
>
>>     -rw-------   1 frankel  prod        1 Nov 29 11:20 1765.dat
>
>> Extracting the archive, tar reported a "lone zero block."  I don't
>> know what this refers to.
>
> Hmm, how big is the tarfile, and would you be willing to send it to
> me?
>
>> I'm happy to either help debug Ft or switch to Fc in my scripts.  I
>> was under the impression, though, that Ft was required to backup db's
>> with blobs.  I am storing some thumbnail jpg images in my db.
>
> Either -Fc or -Ft can handle blobs ... and actually, in 8.1 the issue
> is gone entirely because plain text pg_dump can too.
>
>> I'd also be interested to know if the pg_restore error is due to my
>> upgrade to postgres 8.1 or macosx 10.4.3.
>
> Your guess is as good as mine at the moment.  One thought that
> comes to
> mind --- did you move the tarfile across machines at any point, and if
> so could it have been munged by a Unix/DOS newline conversion?
>
>             regards, tom lane
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
>                http://archives.postgresql.org