11
votes

PostgreSQL: Que signifie "veuillez spécifier le nom de l'index de couverture"

Je voulais éditer les actions dans un tableau. Cependant, j'obtiens le message d'erreur "Veuillez spécifier le nom de l'index de couverture." quand j'essaye de modifier le FK. Comment puis-je réparer ça?

Le tableau se compose de seulement deux colonnes:

image de la table de base de données

Les clés étrangères:

clés étrangères

catégorie FK:

catégorie FK


6 commentaires

Je pense que cette erreur vient de pgAdmin lui-même, pas de PostgreSQL. Quelle modification essayez-vous de faire? L'image montre-t-elle l'état de pré-édition ou l'état de post-édition que vous n'êtes pas autorisé à enregistrer?


Et quelle version de PostgreSQL et de pgAdmin4 utilisez-vous?


Les images sont pré-éditées. Je veux changer l'action "à la suppression" de aucune action en cascade.


Le pgadmin est sur 4.20, la version psql d'installation est 11.7 (Raspbian 11.7-0 + deb10u1)


Oui, je suppose que vous avez raison sur le fait qu'il s'agit d'un problème d'administration PG .. J'ai supprimé les clés étrangères, les ai ajoutées, ajouté les actions et sauvegardé. Leurs actions FK sont désormais en cascade. Maintenant, lorsque j'essaye à nouveau de modifier les propriétés FK, j'ai à nouveau le même problème - mais il est toujours réglé en cascade.


Même problème ici: je ne peux pas supprimer / modifier la clé étrangère en utilisant l'interface PgAdmin, mais je peux faire de même en utilisant des requêtes SQL avec ALTER TABLE.


10 Réponses :


5
votes

Je ne peux pas reproduire votre problème, car pgAdmin4 ne me permettra pas de changer quoi que ce soit à propos d'une contrainte (autre que son nom) en premier lieu, donc je ne peux pas en arriver au point où cela me ferait une erreur comme celle-là. Toutes les possibilités de faire des changements sont là, mais elles sont toutes grisées.

De plus, PostgreSQL lui-même ne vous permettra pas de modifier une action sur une contrainte FK (il n'y a tout simplement aucune variante de «ALTER TABLE» qui l'implémente), vous devez donc supprimer et recréer. Il n'est donc pas surprenant que pgAdmin4 ne me laisse pas modéliser une telle action lorsqu'elle ne peut pas être effectuée.

Je ne sais pas comment vous l'obtenez pour produire cette erreur, mais c'est probablement un bogue de présentation dans pgAdmin4, il signale une condition d'erreur comme une erreur, mais avec un message inutile.


0 commentaires

2
votes

J'ai eu le même problème. C'est vraiment difficile de le reproduire.

J'avais besoin d'ajouter plusieurs clés étrangères. J'ai donc commencé à ajouter de nouvelles colonnes et de nouvelles clés étrangères. À un moment donné, l'erreur "Veuillez spécifier le nom de l'index de couverture" s'est produite. après chaque action dans pgAdmin. Peut-être que j'ai utilisé un nom incorrect pour une colonne parce que j'ai copypasté les noms et qu'il peut y avoir des symboles incorrects, je ne sais pas.

Donc, pour résoudre ce problème, j'ai annulé toutes mes mises à jour : supprimé toutes les nouvelles clés étrangères et les nouvelles colonnes. Et puis cette erreur a disparu.

Comme autre solution, j'ai pensé qu'il était préférable d'écrire simplement des requêtes SQL pour ajouter des clés étrangères.


1 commentaires

je suppose que @jjanes est tout simplement correct. vous ne pouvez pas éditer les FK par la suite - ni dans PG Admin ni dans PostgreSQL. Le changer signifie que vous devez le supprimer et le recréer. Au moins c'est ce que je peux confirmer de mon expérience maintenant



0
votes

J'ai eu la même erreur. Le problème était que j'avais une autre clé étrangère avec le même nom dans une autre table. Je pense que postgres suit l'index de couverture et le nom de la clé étrangère et n'autorise pas le même nom. Vous devez donc utiliser un autre nom.


0 commentaires

0
votes

Qu'est-ce qui a fonctionné dans mon cas - si vous activez manuellement "Validé?" option sur la clé étrangère nouvellement créée et ouvrez "modifier" sur la clé étrangère créée précédemment, puis le message disparaît et vous pouvez enregistrer la contrainte. On dirait une sorte de bug.


0 commentaires

10
votes

dans notre cas, cela a aidé: avant d'enregistrer "nouveau FK", ouvrez d'abord les "options d'édition" de "FK précédemment créé", et NE CHANGEZ rien puis revenez aux options d'édition "FK nouvellement créé", bouton Enregistrer activé par magie


0 commentaires

0
votes

Je viens de résoudre ce problème, selon https://www.pgadmin.org/docs/pgadmin4/4.19/foreign_key_dialog.html, l'avertissement d'index de couverture est activé lorsque "Auto FK Index" est sélectionné lors de la création de la clé étrangère. C'est activé par défault. Je l'ai parcouru et décoché sur chacun des index sur la table qui me donnait le problème et le message est parti.


1 commentaires

Dans mon cas, le commutateur à bascule Auto FK Index est désactivé et la valeur par défaut est Non, je ne peux donc pas le changer.



0
votes

Le problème est arrivé au hasard pour moi. Je viens de trouver que si je vais aux constraints -> primary key onglet de la constraints -> primary key et clique sur l'icône de la corbeille, puis lors de la confirmation de la boîte de dialogue de suppression, je l'annule et boum, l'erreur disparaît et le bouton Enregistrer est activé!


0 commentaires

1
votes

Voici ma solution:

  1. Tableau -> Propriété -> Contraintes -> Clé étrangère -> cliquez sur l'icône de suppression pour toutes les clés étrangères.

  2. Table -> Propriété -> Contraintes -> Clé étrangère -> Ajouter à nouveau une clé étrangère.

Je suppose que vous modifiez le FK actuel ou ajoutez un nouveau FK qui cause ce problème.


0 commentaires

24
votes

Solution temporaire: utilisation de pgAdmin

Si vous avez une seule clé étrangère:

Cliquez sur modifier pour développer, puis cliquez à nouveau dessus pour réduire, le bouton Enregistrer doit être réactivé à nouveau.

Si vous avez plusieurs clés étrangères:

Répétez sur chaque entrée de clé étrangère, cliquez sur éditer et "déséditer" pour chaque clé étrangère , le bouton Enregistrer doit être réactivé après chaque clic.

Habituellement, chaque fois que l'erreur apparaît lorsque je veux ajouter quelque chose à la contrainte, je vais simplement développer et réduire chaque clé étrangère, le bouton Enregistrer devrait fonctionner à nouveau.

Édité

Si vous souhaitez ajouter une action, par exemple: Sur mise à jour / Sur suppression

Le message d'erreur réapparaîtra. N'oubliez pas de cliquer sur le bouton '+' pour ajouter la colonne, puis répétez les étapes ci-dessus (développer, réduire) pour effacer le message d'erreur, puis vous pouvez enregistrer la clé étrangère. Ouais ~ Je sais que c'est moche ...

Pour mettre à jour l'action pour la clé étrangère existante

Actuellement, je ne connais aucune solution de contournement, mais la manière laide ...

Supprimez la fkey -> recréez la clé étrangère -> mettez à jour l'action -> effacez le message d'erreur avec les étapes ci-dessus -> enregistrez.


4 commentaires

Cela a fonctionné pour moi pour effacer le message d'erreur "veuillez spécifier le nom de l'index de couverture" mais pas pour permettre l'édition de l'action FK. Comme mentionné par @jjanes, je pense que cette action n'est pas possible.


@MarkHansen Avez-vous appuyé sur l'icône «+» pour ajouter la colonne? puis ajoutez une action. J'ai essayé, ça marche pour moi. Pour l'édition, oui, il est grisé, je dois supprimer la clé puis créer une nouvelle clé pour mettre à jour l'action.


Une fois l'erreur d'expansion / réduction disparue. Merci.


Je suis content que cela vous ait aidé.



0
votes

tapez simplement le nom de l'index de la clé étrangère ... quelques lettres fki_index_name (si vous voulez un index généré "auto FK index" ou désactivez-le!

Et oui ça ressemble à un bug dans pgadmin pas postgresql


0 commentaires