PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 14/04/2019 19:02:02

fevil
Membre

[9.3] Postgresql DATABASE listed in pg_database doest not exist

Bonjour,

j'ai un problème avec une database sur postgresql 9.3


bien qu'une database soit listée et visible dans pg_database, il m'est impossible de m'y connecter ou de la supprimer.


J'ai déjà essayé de la supprimer :


_ via DROP --) base xxx does not exist
_ via dropdb --) base xxx does not exist
_ via update de pg_database --) UPDATE 0
_ via suppression d'une ligne de pg_database --) DELETE 0
_ via son directory
_ via recreation ed son directory à partir de l'OID.
_ de recréer une base avec le même nom et de la supprimer. --) seule la nouvelle base est supprimée.



Mon soucis c'est que je suis incapable de faire un pg_dump de la nouvelle base crée, puisqu'il y a 2 lignes avec le nom de cette base dans le pg_database.


Je pense avoir lu quasi toutes les pages web en relation avec ce problème en 6 langues. Aucun problème similaire au mien n'a trouvé de solution que se soit en russe ou chinois ou anglais.


merci

Dernière modification par fevil (14/04/2019 20:11:50)

Hors ligne

#2 15/04/2019 08:36:38

gleu
Administrateur

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Si elle apparaît deux fois dans pg_database, c'est qu'il doit y avoir des caractères invisibles dans le nom d'une d'entre elles (voire des deux). Que donne un "SELECT oid, datname, length(datname) FROM pg_database" ?


Guillaume.

Hors ligne

#3 15/04/2019 10:27:12

fevil
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Les 2 bases ont le même nombre de caractères.
Quand je lance un select via datname de la table pg_database, les deux lignes s affichent.

Hors ligne

#4 15/04/2019 11:32:52

gleu
Administrateur

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Je n'avais pas lu toutes vos tentatives mais je viens de le faire. Je vois "suppression de son directory" et "recréation de son directory à partir de l'OID". Vous voulez dire que vous avez fait une suppression via la commande rm du répertoire de cette base ?


Guillaume.

Hors ligne

#5 15/04/2019 11:51:14

fevil
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Après les échecs standards de suppression, J ai en effet recréé naïvement le dossier. Ceci n a pas eu d impact positif. Je l ai donc en effet ensuite supprimé via rm.

Hors ligne

#6 15/04/2019 12:01:47

gleu
Administrateur

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Dans ce cas, je ne vois qu'une seule solution de retour à la normale : supprimer le répertoire des données PostgreSQL, faire un initdb et restaurer les sauvegardes. Il ne faut jamais supprimer les fichiers (de données ou de transactions notammentà gérés par PostgreSQL.


Guillaume.

Hors ligne

#7 15/04/2019 12:31:26

fevil
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

J ai fouille les sources pour comprendre ce qu' il se passe exactement quand on drop une database.
J ai trouvé une part du soucis en consultant gram.y.
Le missing_ok retourne en erreur.

Hors ligne

#8 15/04/2019 14:28:41

dverite
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Quand je lance un select via datname de la table pg_database, les deux lignes s affichent.

Il faudrait voir le résultat de cette requête:

 SELECT datname, datname::bytea, md5(datname) FROM pg_database;

Un vrai doublon n'est pas impossible si l'index unique sur pg_database.datname est corrompu, mais ce n'est pas le plus probable.

Indépendamment de ça, la suppression manuelle  du répertoire fait que comme dit Guillaume, le PGDATA peut être considéré comme perdu maintenant.

Hors ligne

#9 15/04/2019 15:10:10

fevil
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Ça me donne exactement les mêmes caractères sur les 2 bases pour le datname et le md5.

Hors ligne

#10 15/04/2019 15:12:40

dverite
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Et que dit un REINDEX TABLE pg_database ?

Hors ligne

#11 15/04/2019 15:14:45

gleu
Administrateur

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Un vrai doublon n'est pas impossible si l'index unique sur pg_database.datname est corrompu, mais ce n'est pas le plus probable.

Surtout pour la requête que tu donnes... impossible que PG utilise un index pour ça. J'aime bien l'idée de calculer le MD5, j'aurais dû y penser.


Guillaume.

Hors ligne

#12 15/04/2019 16:31:51

fevil
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Le reindex a été exécuté.
Malheureusement ca n a pas permis de résoudre le problème.

Hors ligne

#13 15/04/2019 16:42:08

dverite
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Est-ce qu'il y a un index unique sur pg_database.datname ou pas?

Hors ligne

#14 15/04/2019 19:19:25

rjuju
Administrateur

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Et est-ce que vous voyez 2 oid différent pour les deux lignes ?

En ligne

#15 16/04/2019 01:47:33

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Est-ce que vous utilisez pgAdmin ou uniquement en mode console?


Philippe Siquin
DBA Gouvernement de la Polynésie Française

Hors ligne

#16 16/04/2019 06:50:39

fevil
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

dverite a écrit :

Est-ce qu'il y a un index unique sur pg_database.datname ou pas?

je ne sais pas comment retrouver cette information.

Et est-ce que vous voyez 2 oid différent pour les deux lignes ?

Il y a bien 2 oids différents pour chacune des lignes.

Est-ce que vous utilisez pgAdmin ou uniquement en mode console?

uniquement en mode console.

Dernière modification par fevil (16/04/2019 06:52:54)

Hors ligne

#17 16/04/2019 08:03:16

rjuju
Administrateur

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

Vous pouvez faire un "\d pg_database", cela vous affichera la définition de la table, y compris les index présents.

En ligne

#18 16/04/2019 21:07:14

fevil
Membre

Re : [9.3] Postgresql DATABASE listed in pg_database doest not exist

On m'a retiré la main...

Hors ligne

Pied de page des forums