pg_restore bricht ab

Moin,

bin ein Greenhorn bzgl. PG. Arbeite sonst mit Informix unter Linux. Nun muss ich hier ein System updaten. Bevor ich das aber mache, möchte ich gerne einen Dump der Datenbank erstellen und diesen auch wieder erfolgreich einspielen können. Leider klappt das einspielen nicht. Es ist ein SuSE Linux 8.2 und eine Postgres 7.3.8 Datenbank.

als erstes sage ich:

pg_dump -Ft -b rt3 > rt3.tar
createdb rt3backup
pg_restore -d rt3backup rt3.tar

pg_restore bringt nun folgende Ausgabe auf der Shell:

pg_restore: NOTICE:  CREATE TABLE will create implicit sequence 'fm_content_id_seq' for SERIAL column 'fm_content.id'
pg_restore: NOTICE:  CREATE TABLE will create implicit sequence 'fm_classes_id_seq' for SERIAL column 'fm_classes.id'
pg_restore: NOTICE:  CREATE TABLE will create implicit sequence 'fm_classcustomfields_id_seq' for SERIAL column 'fm_classcustomfields.id'
pg_restore: NOTICE:  CREATE TABLE will create implicit sequence 'fm_customfields_id_seq' for SERIAL column 'fm_customfields.id'
pg_restore: NOTICE:  CREATE TABLE will create implicit sequence 'fm_articles_id_seq' for SERIAL column 'fm_articles.id'
pg_restore: NOTICE:  CREATE TABLE will create implicit sequence 'fm_customfieldvalues_id_seq' for SERIAL column 'fm_customfieldvalues.id'
pg_restore: NOTICE:  CREATE TABLE will create implicit sequence 'fm_articlecfvalues_id_seq' for SERIAL column
'fm_articlecfvalues.id'
pg_restore: NOTICE:  CREATE TABLE will create implicit sequence 'fm_transactions_id_seq' for SERIAL column 'fm_transactions.id'
pg_restore: [archiver (db)] error returned by PQputline

und in /var/log/postgres steht:

NOTICE:  CREATE TABLE will create implicit sequence 'fm_content_id_seq' for SERIAL column 'fm_content.id'
NOTICE:  CREATE TABLE will create implicit sequence 'fm_classes_id_seq' for SERIAL column 'fm_classes.id'
NOTICE:  CREATE TABLE will create implicit sequence 'fm_classcustomfields_id_seq' for SERIAL column 'fm_classcustomfields.id'
NOTICE:  CREATE TABLE will create implicit sequence 'fm_customfields_id_seq' for SERIAL column 'fm_customfields.id'
NOTICE:  CREATE TABLE will create implicit sequence 'fm_articles_id_seq' for SERIAL column 'fm_articles.id'
NOTICE:  CREATE TABLE will create implicit sequence 'fm_customfieldvalues_id_seq' for SERIAL column 'fm_customfieldvalues.id'
NOTICE:  CREATE TABLE will create implicit sequence 'fm_articlecfvalues_id_seq' for SERIAL column 'fm_articlecfvalues.id'
NOTICE:  CREATE TABLE will create implicit sequence 'fm_transactions_id_seq' for SERIAL column 'fm_transactions.id'
LOG:  recycled transaction log file 0000000500000015
LOG:  recycled transaction log file 0000000500000018
LOG:  recycled transaction log file 0000000500000016
LOG:  recycled transaction log file 0000000500000017
LOG:  recycled transaction log file 000000050000001B
LOG:  recycled transaction log file 0000000500000019
LOG:  recycled transaction log file 000000050000001A
LOG:  recycled transaction log file 000000050000001E
LOG:  recycled transaction log file 000000050000001C
LOG:  recycled transaction log file 000000050000001D
LOG:  recycled transaction log file 000000050000001F
LOG:  recycled transaction log file 0000000500000020
LOG:  recycled transaction log file 0000000500000021
LOG:  recycled transaction log file 0000000500000022
LOG:  recycled transaction log file 0000000500000023
LOG:  recycled transaction log file 0000000500000024
LOG:  recycled transaction log file 0000000500000025
LOG:  recycled transaction log file 0000000500000026
LOG:  recycled transaction log file 0000000500000027
LOG:  recycled transaction log file 0000000500000028
LOG:  recycled transaction log file 0000000500000029
LOG:  recycled transaction log file 000000050000002A
FATAL:  unsupported frontend protocol
LOG:  recycled transaction log file 000000050000002B
LOG:  recycled transaction log file 000000050000002C
LOG:  recycled transaction log file 000000050000002D
LOG:  recycled transaction log file 000000050000002E
LOG:  recycled transaction log file 000000050000002F
LOG:  recycled transaction log file 0000000500000030
LOG:  recycled transaction log file 0000000500000031
LOG:  recycled transaction log file 0000000500000032
LOG:  recycled transaction log file 0000000500000033
LOG:  recycled transaction log file 0000000500000034
LOG:  recycled transaction log file 0000000500000035
LOG:  recycled transaction log file 0000000500000036
LOG:  recycled transaction log file 0000000500000037
LOG:  recycled transaction log file 0000000500000038
LOG:  recycled transaction log file 0000000500000039
LOG:  recycled transaction log file 000000050000003A
LOG:  recycled transaction log file 000000050000003B
LOG:  recycled transaction log file 000000050000003C
LOG:  recycled transaction log file 000000050000003D
LOG:  recycled transaction log file 000000050000003E
LOG:  recycled transaction log file 000000050000003F
LOG:  recycled transaction log file 0000000500000040
LOG:  recycled transaction log file 0000000500000041
LOG:  recycled transaction log file 0000000500000042
LOG:  recycled transaction log file 0000000500000043
LOG:  recycled transaction log file 0000000500000044
LOG:  recycled transaction log file 0000000500000045
LOG:  recycled transaction log file 0000000500000046
LOG:  recycled transaction log file 0000000500000047
LOG:  recycled transaction log file 0000000500000048
ERROR:  copy: line 33747, value too long for type character varying(100)
FATAL:  Socket command type 5 unknown
LOG:  recycled transaction log file 0000000500000049
LOG:  recycled transaction log file 000000050000004A
LOG:  recycled transaction log file 000000050000004B
LOG:  recycled transaction log file 000000050000004C
LOG:  recycled transaction log file 000000050000004D
LOG:  recycled transaction log file 000000050000004E

Kann mir mal jemand helfen, wie ich nun weiter vorgehen soll? Ich will das Update erst durchziehen, wenn ich erfolgreich einen Dump zurückspielen kann!


Martin

Mmh, schlecht.

Warum einklich auf eine 7.3? Die ist FURCHTBAR alt. Du willst Updaten? Dann nehme doch das pg_dump der höheren Version. pg_dump bis incl. 7.4 hat bekannte Fehler, möglicherweise stolperst Du grad über einen.

Andreas

Tja, das ganze ist ein Live System, für das ich eigentlich nicht zuständig bin.

Und wenn ich ehrlich bin, will ich mir den Stress mit nem Update der DB nicht antun.

Kann ich denn einfach so ein pg_dump Binary aus einem aktuellen Tarball nehmen? Eigentlich muss ich ja dann auch ein aktuelles pg_restor nehmen, oder?

Ist es sehr aufwendig PG upzudaten?

Ja, pg_dump ist ein Client, mehr nicht. Allerdings könnte es sein, daß ein 8.2er pg_dump Befehle einbaut, die ein z.B. 7.3 nicht mehr versteht. Da bin ich mir grad nicht sicher.

Eigentlich muss ich ja dann auch ein aktuelles pg_restor nehmen, oder?

Jein. Du kannst ja ein ASCII-Dump machen.

Ist es sehr aufwendig PG upzudaten?

42


Andreas

Habs eben mal probiert und mir aus einem 7.4.x rpm das Binary pg_dump extrahiert. Leider fehlen nun Bibliotheken. Daher vermute ich, das auch ein Update der DB auf dem System scheitern wird …