Hallo zusammen!
Ich schicke eines vorweg: Ich bin SQL - DAU!
Es wäre sehr, sehr lieb wenn mir hier trotzdem jemand helfen könnte.
Was ist passiert?
Ich habe ein phpbb2 mit PostgreSQL 7.4 auf einem Debian Linux System (3.1) betrieben. Kein Problem soweit.
Jetzt musste ich das System neu installieren. (Wieder Debian 3.1, wieder PostgreSQL 7.4).
Ich habe meine phpbb2 Datenbank wie folgt gesichert:
pg_dump -o -F c -U postgres -W DBNAME | gzip > DBNAME_mit_OIDs.pgsqldb.gz
und
pg_dump -d -F c -U postgres -W DBNAME | gzip > DBNAME_ohne_OIDs.pgsqldb.gz
Das habe ich so gemacht, weil ich den OID - Switch als besagter DAU nicht wirklich verstanden habe und mir dachte: Besser zuviel als zuwenig sichern! Zumal das mit ~130KB echt kein Brot frisst…
Zusätzlich habe ich mit pgAdmin III unter Windows mich zum PG Server verbunden und ein Backup angelegt.
So, als ich den Server neu installiert habe, will ich die DB wie folgt wieder herstellen:
1) DB mit dem selben Eigentümer, Zeichensatz und DB Namen angelegt
2) postgres@host: ~# zcat DBNAME_mit_OIDs.pgsqldb.gz | psql -d DBNAME -h MeinHostname -U postgres -W
Dabei hagelt es Syntaxfehler…
Die folgende Ausgabe ist zwar von PostgreSQL 8.1, aber die 7.4er Version liefert dasselbe:
FEHLER: Fehler »Syntaxfehler« bei »PGDMP« at character 1
ZEILE 1: PGDMPGRANT ALL ON SCHEMA public TO PUBLIC;
^
FEHLER: Fehler »Syntaxfehler« bei »INCREMENT« at character 1
ZEILE 1: INCREMENT BY 1
OK, ist ja nicht schlimm, dachte ich - ich habe ja noch das pgAdmin III Backup.
Ich wähle also die frisch erstellte DB, wähle “Wiederherstellen”, wähle das Backup und:
C:\Programme\pgAdmin III\1.6\pg_restore.exe -i -h MeinSystem -p 5432 -U postgres -d "DB" -v "C:\DB.backup"
pg_restore: connecting to database for restore
pg_restore: [archiver (db)] Error while INITIALIZING:
pg_restore: [archiver (db)] could not execute query: FEHLER: Parameter »standard_conforming_strings« kann nicht geändert werden
Command was: SET standard_conforming_strings = off;
pg_restore: creating SCHEMA public
Auch diese Ausgabe ist wieder aus dem PostgreSQL8.1 System - beim 7.4er beschwert er sich über Syntax-Fehler.
Jetzt kommt das Kuriose: Ich habe PostgreSQL 8.1 auf einem Windows System installiert, und da klappen alle Imports Problemlos!
Was geht hier ab?? O.o
Diese Windows - DB funktioniert auch - setze ich das phpbb2 Forum auf die Windows-Kiste an, ist alles super!
Nun habe ich mit pgAdmin III folgendes mit dieser Windows - DB gemacht: Erneut “Backup” gewählt und “INSERTS” angehakt.
Wenn ich im Windows System nun eine völlig neue DB erstelle, und dieses INSERT-Script mit dem pgAdmin III Abfragewerkzeug auf diese neue DB ausführe gibt es nicht einen Fehler und die DB funktioniert im phpbb2.
Mache ich dasselbe auf die Linux - Postgres 8.1 DB, kommt im Abfragetool nach ca. 29803 ms:
FEHLER: Fehler »Syntaxfehler« bei »;«
SQL Status:42601
Zeichen:756
Ich weiss echt nicht mehr weiter … ich verstehe den Fehler nichtmal.
Ich habe es nun so ausführlich wie möglich beschrieben. Solltet Ihr noch genauere Fragen haben, bitte fordert sie an.