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:
Les clés étrangères:
catégorie FK:
10 Réponses :
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.
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.
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
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.
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.
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
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.
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.
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é!
Voici ma solution:
Tableau -> Propriété -> Contraintes -> Clé étrangère -> cliquez sur l'icône de suppression pour toutes les clés étrangères.
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.
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.
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é.
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
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.