Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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.
@DanielVerite
http://blog-postgresql.verite.pro/
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 ?
@DanielVerite
http://blog-postgresql.verite.pro/
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?
@DanielVerite
http://blog-postgresql.verite.pro/
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 ?
Julien.
https://rjuju.github.io/
Hors ligne
#15 16/04/2019 01:47:33
- philippesiquin
- Membre
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
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.
Julien.
https://rjuju.github.io/
Hors 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