|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Corinne Le MoanIngénieur développement logiciels Inscription : septembre 2006 Messages : 114 ![]() |
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 ? |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : octobre 2008 Messages : 1 505 ![]() |
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.
|
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Corinne Le MoanIngénieur développement logiciels Inscription : septembre 2006 Messages : 114 ![]() |
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é.
|
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : octobre 2008 Messages : 1 505 ![]() |
Sinon on peut voir ce qui est connecté à une base avec
Code :
SELECT * FROM pg_stat_activity WHERE datname='nom de la base' |
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Corinne Le MoanIngénieur développement logiciels Inscription : septembre 2006 Messages : 114 ![]() |
Oui je l'avais déjà fait :
Code :
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 ? |
||
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : octobre 2008 Messages : 1 505 ![]() |
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. |
|
|
00
|
|
|
#7 | ||
|
Membre du Club
![]() Corinne Le MoanIngénieur développement logiciels Inscription : septembre 2006 Messages : 114 ![]() |
![]() Code :
|
||
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : octobre 2008 Messages : 1 505 ![]() |
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: |
|
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() Corinne Le MoanIngénieur développement logiciels Inscription : septembre 2006 Messages : 114 ![]() |
Ah ! Je crois qu'on tient le bon bout! Je fais un delete là dessus ?
Code :
|
||
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : octobre 2008 Messages : 1 505 ![]() |
Il faudrait maintenant en étant connecté à la base en question, faire
Code :
ROLLBACK PREPARED '131075_MS0tNTNlZmU1ZjM6YWRkMzo0Y2Y0YzhkZjo5ZTdjYzg=_LTUzZWZlNWYzOmFkZDM6NGNmNGM4ZGY6OWU3Y2Nk';
|
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Corinne Le MoanIngénieur développement logiciels Inscription : septembre 2006 Messages : 114 ![]() |
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 !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com