IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration PostgreSQL Discussion :

Impossible de supprimer la base


Sujet :

Administration PostgreSQL

  1. #1
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut Impossible de supprimer la base
    Bonjour,
    je travaille avec postgresql 8.3 sur debian.
    Ma base est utilisée dans le cadre d'une application JEE au travers d'Hibernate (JBoss 4.2).
    Mon problème à l'origine était que je n'arrivais pas à ajouter une colonne dans une table (la requête ALTER TABLE ne rendait pas la main comme bloquée sur un point critique.
    Je me suis donc décidée à recréer une base vide en y réinjectant les données de la première.
    La première n'est maintenant plus du tout utilisée mais il m'est impossible de la supprimer dropdb me renvoit une erreur comme quoi elle est en cours d'utilisation.
    Une idée, une piste ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Ne serais-tu pas connectée à la base que tu veux supprimer? Si c'est le cas, il faut se connecter à une autre base, par exemple celle nommée postgres.

  3. #3
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut
    Et bien non. j'essaie avec la commande dropdb sonc je ne suis connectée à aucune base. J'ai bien vérifié que je n'ai pas d'appli connectée. J'ai même arrêté et redémarré le serveur postgresql avant de lancer ma commande dropdb. Rien à faire. J'ai pensé à un process autovacuum, je l'ai donc désactivé.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Sinon on peut voir ce qui est connecté à une base avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from pg_stat_activity where datname='nom de la base'

  5. #5
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut
    Oui je l'avais déjà fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    aipa2=> select * from pg_stat_activity where datname ='aipa';
     datid | datname | procpid | usesysid | usename | current_query | waiting | xact_start | query_start | backend_start | client_addr | client_port 
    -------+---------+---------+----------+---------+---------------+---------+------------+-------------+---------------+-------------+-------------
    (0 lignes)

    J'y connais rien mais j'aurais pas des fichiers temporaires à effacer, il ya peut-être un fichier lock quelque part ?
    Ou sinon, je peux peut-être supprimer la base en supprimant les fichiers data, mais comment le faire proprement ?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Non il faut vraiment faire passer le drop database sans supprimer directement des fichiers.
    Une autre idée:
    1- en SQL, loggé en superutilisateur, faire ALTER DATABASE aipa connection limit=0;
    2- arrêter et redémarrer l'instance postgres
    3- contrôler le résultat de select * from pg_stat_activity (sur toutes les bases cette fois-ci) ainsi que select * from pg_database
    4- drop database aipa;

    S'il y a encore un message d'erreur, le copier dans ce fil de discussion.

  7. #7
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    postgres=# select * from pg_stat_activity;
     datid | datname  | procpid | usesysid | usename  |          current_query          | waiting |          xact_start           |          query_start          |         backend_start         | client_addr | client_port 
    -------+----------+---------+----------+----------+---------------------------------+---------+-------------------------------+-------------------------------+-------------------------------+-------------+-------------
     11511 | postgres |    7515 |       10 | postgres | select * from pg_stat_activity; | f       | 2011-03-24 14:25:48.538329+01 | 2011-03-24 14:25:48.538329+01 | 2011-03-24 14:25:12.759171+01 |             |          -1
    (1 ligne)
     
    postgres=# select * from pg_database ;
      datname  | datdba | encoding | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | dattablespace | datconfig |               datacl                
    -----------+--------+----------+---------------+--------------+--------------+---------------+--------------+---------------+-----------+-------------------------------------
     template1 |     10 |        6 | t             | t            |           -1 |         11510 |          379 |          1663 |           | {=c/postgres,postgres=CTc/postgres}
     template0 |     10 |        6 | t             | f            |           -1 |         11510 |          379 |          1663 |           | {=c/postgres,postgres=CTc/postgres}
     postgres  |     10 |        6 | f             | t            |           -1 |         11510 |          379 |          1663 |           | 
     aipa2     |  16384 |        6 | f             | t            |           -1 |         11510 |          379 |          1663 |           | 
     aipa      |  16384 |        6 | f             | t            |            0 |         11510 |          379 |          1663 |           | 
    (5 lignes)
     
    postgres=# drop DATABASE aipa;
    ERREUR:  la base de données « aipa » est en cours d'utilisation par d'autres utilisateurs
    postgres=#

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    OK... (grattage de tête). Il est possible alors qu'il y ait des transactions préparées sur cette base qui empêche le DROP. Ce genre de chose résiste au redémarrage du serveur.
    La commande suivante devrait le dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from pg_prepared_xacts;

  9. #9
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut
    Ah ! Je crois qu'on tient le bon bout! Je fais un delete là dessus ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    postgres=# select * from pg_prepared_xacts;
     transaction |                                             gid                                              |           prepared            | owner | database 
    -------------+----------------------------------------------------------------------------------------------+-------------------------------+-------+----------
           50564 | 131075_MS0tNTNlZmU1ZjM6YWRkMzo0Y2Y0YzhkZjo5ZTdjYzg=_LTUzZWZlNWYzOmFkZDM6NGNmNGM4ZGY6OWU3Y2Nk | 1915-01-02 04:04:51.879795+00 | aipa  | aipa
    (1 ligne)

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Il faudrait maintenant en étant connecté à la base en question, faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ROLLBACK PREPARED '131075_MS0tNTNlZmU1ZjM6YWRkMzo0Y2Y0YzhkZjo5ZTdjYzg=_LTUzZWZlNWYzOmFkZDM6NGNmNGM4ZGY6OWU3Y2Nk';

  11. #11
    Membre régulier
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 114
    Points : 101
    Points
    101
    Par défaut
    Yes ! Je vais maintenant regarder de plus près dans la doc cette histoire de transaction préparée, ça doit être hibernate qui les crée.
    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Impossible de supprimer le chiffrement d'une base de données Access
    Par albayt dans le forum Sécurité
    Réponses: 2
    Dernier message: 12/01/2014, 00h49
  2. Réponses: 1
    Dernier message: 17/10/2008, 09h07
  3. Réponses: 8
    Dernier message: 18/09/2007, 09h55
  4. Supprimer une base de données
    Par atos dans le forum Administration
    Réponses: 11
    Dernier message: 20/07/2004, 16h17
  5. Impossible de restaurer une base
    Par bencot dans le forum InterBase
    Réponses: 5
    Dernier message: 27/11/2003, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo