FATAL: cache lookup failed for index 2662

Hallo,

ich muss zunächst vorausschicken, dass ich mich noch nicht lange mit PostgreSQL beschäftige.

Bisher konnte ich ohne Probleme über zwei php Skripte durch den String:

$c=pg_connect(“host=localhost port=XXXX dbname=XXXXX user=XXXXX password=XXXXXXX”);

auf eine Datenbank zugreifen. Heute Morgen kam auf einmal die Fehlermeldung:

Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Connection refused
Is the server running on host “localhost” and accepting
TCP/IP connections on port 5432? (…)

Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Connection refused
Is the server running on host “localhost” and accepting
TCP/IP connections on port 5432? (…)

Nachdem ich den Server neu startete kam die Fehlermeldung:

Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: cache lookup failed for index 2662 in (…)

Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: cache lookup failed for index 2662 in (…)

Durch einige Recherche habe ich den ersten Fehler gefunden und den String durch:

$c=pg_connect(“dbname=XXXXX user=XXXXX password=XXXXXXX”);

ersetzt. Nach der Quelle “PHP: pg_connect - Manual” sollte dies den ersten Fehler beheben.

Leider kommt die zweite Fehlermeldung nach wie vor, und ich kann auch noch nicht auf die DB zugreifen.

Kann mir da jemand weiterhelfen?

Danke
Gruß
Tux

Die Anmeldung an sich ist in beiden Fällen richtig, es hat ja auch mal geklappt. Der Unterschied ist lediglich, daß bei Angabe von Host und Port ein Connect via TCP/IP erfolgt und ohne diese Parameter via Unix-Socket, wobei letztere Variante schneller ist.

Das Problem ist was anderes:

Dir ist der Server runtergefallen (warum auch immer) und dabei hat es einen Index auf einer wichtigen Systemtabelle (pg_class) geschreddert.

test=# select 2662::regclass;
      regclass
--------------------
 pg_class_oid_index
(1 row)

Das deckt sich auch mit Re: cache lookup failed for index – Postgresql Admin , schau Dir diesen Thread an und versuche, den Index zu reparieren. Wie, ist im Thread da beschrieben.

Du solltest auch rausbekommen, was die Ursache für den kapotten Index bzw. den Absturz ist. Kann es sein, daß fsync=off ist? Normalerweise sollte selbst ein harter Crash nicht die DB schreddern, sondern die DB sollte bis zum letzten COMMIT wieder hochkommen. Vielleicht ein Plattenfehler?


Andreas

Noch ein Hinweis: bevor du irgendetwas reparierst: fahr die Datenbank runter und erstelle ein Backup vom kompletten Datenverzeichnis.
Das ist jetzt schon kaputt, du willst ggf. durch deine Reparaturversuche nicht noch mehr kaputt machen.