J'ai plusieurs erreurs avec ma base de données postgresql, résultant d'une surtension:
Je ne peux pas accéder à la plupart des tables de ma base de données. Quand j'essaie par exemple select * from ac_cash_collection
lorsque j'essaie pg_dump, j'obtiens l'erreur suivante:
Message d'erreur du serveur: ERREUR: la relation "public.st_stock_item_newlist" n'existe pas Pg_dump: la commande était: LOCK TABLE public.st_stock_item_newlist EN MODE ACCÈS PARTAGÉ.
Je suis allé de l'avant et j'ai essayé de réindexer toute la base de données. En fait, je l'ai laissée en cours d'exécution, je me suis endormie et j'ai constaté qu'elle n'avait rien fait le matin. J'ai donc dû l'annuler.
J'ai besoin d'aide pour résoudre ce problème le plus rapidement possible. Aidez-moi, s'il vous plaît.
Avant de faire rien sinon, http://wiki.postgresql.org/wiki/Corruptionet de suivre les instructions. Ne pas le faire risque d’aggraver le problème.
Il existe deux paramètres de configuration répertoriés dans le manuel Fine Manual qui pourraient être utiles: ignore_system_indexes
et zero_damaged_pages
. Je ne les ai jamais utilisés, mais je le ferais si j'étais désespéré ...
Je ne sais pas s'ils aident contre les toasts. Dans tous les cas, si leur configuration rend votre (vos) base (s) base (s) utilisable (s) à nouveau, je voudrais {backup + drop + restore} remettre toutes les tables et tous les catalogues à la forme. Succès!
Si vous avez des sauvegardes, restaurez-les simplement.
Sinon, vous venez d'apprendre pourquoi vous avez besoin de sauvegardes régulières. PostgreSQL ne peut rien faire si le matériel se comporte mal.
De plus, si vous vous retrouvez de nouveau dans cette situation, arrêtez d'abord PostgreSQL et effectuez une sauvegarde complète au niveau des fichiers de tous les éléments - tous les espaces table, WAL, etc. Ainsi, vous avez un point de départ connu.
Donc, si vous voulez toujours récupérer des données.
Cela demande beaucoup de travail et vous devrez ensuite vérifier et vérifier ce que vous avez récupéré, puis essayer de déterminer ce qui manque/est incorrect.
Il y a plus de choses que vous pouvez faire (créer des blocs vides dans certains cas peut vous permettre de vider des données partielles), mais elles sont toutes plus compliquées et fastidieuses et à moins que les données ne soient particulièrement précieuses et ne valent pas la peine.
Message clé à retenir: veillez à effectuer des sauvegardes régulières et à leur bon fonctionnement.
Avant toute chose, créez une copie complète au niveau du système de fichiers de la base de données endommagée.
http://wiki.postgresql.org/wiki/Corruption
Ne pas le faire détruit les preuves sur la cause de la corruption et signifie que si vos efforts de réparation vont mal et aggravent les choses, vous ne pouvez pas les annuler.
Copiez-le maintenant!