Postgresql DROP TABLE ne fonctionne pas
Je suis en train de déposer un peu de tables avec le "DROP TABLE"
de commande, mais pour une raison inconnue, le programme "assis" et de ne pas supprimer la table que je veux dans la base de données.
J'ai 3 tables dans la base de données:
Produit, le projet de Loi et Bill_Products qui est utilisé pour le référencement des produits dans les factures.
J'ai réussi à supprimer/déplacer le Produit, mais je ne peux pas faire de même pour le projet de loi et Bill_Products.
Je suis émission de la même "DROP TABLE Bill CASCADE;"
commande, mais la ligne de commande juste étals de. J'ai aussi utilisé la version simple, sans la CASCADE
option.
Avez-vous une idée pourquoi ce qui se passe?
mise à Jour:
J'ai pensé qu'il est possible pour les bases de données de garder quelques références de produits pour les factures et peut-être que c'est pourquoi il ne sera pas effacer le projet de Loi de table.
Donc, pour cette question, j'ai publié une simple SELECT * from Bill_Products
et après quelques (10 à 15) secondes (étrangement, parce que je ne pense pas que c'est normal que ça dure un temps long quand il y a une table vide) imprimer le tableau et son contenu, qui n'en sont pas. (donc apparemment il n'y a pas de références à gauche à partir de Produits pour le projet de Loi).
Essayé sans, mais sans aucun effet.
"La ligne de commande juste étals de" Qu'est-ce que cela signifie?
psql
se bloque, se bloque ou se fige? Avez-vous de le tuer? Ce n'est Ctrl-C? Je suppose que je suis juste dire à définir les "stands" de. Ou n'êtes-vous pas utiliser psql?Peut-être une autre transaction a un verrou sur la table de sorte que vous ne pouvez pas tomber?
Le redémarrage ne fonctionne que pour les tables nommé "projet de Loi" 😉
OriginalL'auteur Radu Gheorghiu | 2012-04-25
Vous devez vous connecter pour publier un commentaire.
Qu'est-ce que la sortie de
Il pourrait être qu'il y a d'autres sessions à l'aide de votre table en parallèle et vous ne pouvez pas obtenir Accès Exclusif de verrouillage de la faire tomber.
psdemo=> SELECT * from pg_locks l join pg_class t on l.relation = t.oid AND t.relkind = 'r' WHERE t.relname="ps_bill"; ERROR: column "ps_bill" does not exist LINE 1: ...ation = t.oid AND t.relkind = 'r' WHERE t.relname="ps_bill";
Pour une valeur littérale, utilisez des guillemets simples (l'apostrophe). PostgreSQL est conforme à la norme SQL dans le traitement des guillemets comme l'enchaînement d'un identifiant.
Je vous remercie, mais j'ai réussi à la fixer avec un simple redémarrage. C'est une sorte de stupide et pas un de démystifier la chose, ce que j'ai fait, mais c'était le chemin le plus court à travers le problème. J'ai jusqu'a voté votre réponse afin que vous sachiez que je vous remercie de votre aide. Je suppose en effet il y avait une transaction qui s'est tenue une serrure sur les tables.
Oui , j'ai réussi à obtenir plus de ce problème en redémarrant simplement postgresql, puis la suppression de la table.
OriginalL'auteur vyegorov
Il suffit de ne
Et ensuite de tuer tous les pid par
Où 1234 est votre réelle pid à partir des résultats de la requête.
Vous pouvez transférer tous ensemble comme ceci (si vous n'avez pas à copier-coller chaque pid manuellement):
relname
être?relname est en fait un nom de table.
OriginalL'auteur Fancy John
Donc j'ai été frapper ma tête contre le mur pendant quelques heures à essayer de résoudre le même problème, et voici la solution qui a fonctionné pour moi:
Vérifier si PostgreSQL est en attente d'un prêt de la transaction qui n'a jamais été validée ou annulée:
Si vous obtenez un résultat, puis pour chaque transaction gid, vous devez exécuter un RESTAURATION à partir de la base de données ayant le problème:
Pour de plus amples informations, cliquez ici.
OriginalL'auteur Thomas C. G. de Vilhena
Eu le même problème.
Il n'y avait pas de verrous sur la table.
Redémarrage aidé.
Même ici. J'ai besoin de redémarrer
OriginalL'auteur alekzvik
Une vieille question, mais a couru dans un problème similaire. Ne pouvait pas redémarrer la base de données afin de tester un peu les choses jusqu'à ce que cette séquence de travail :
OriginalL'auteur kert