|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : avril 2006 Messages : 110 ![]() |
Bonjour ! Ma table est en innoDB, j'ai mySQL 4.1.9. Cette table contient plusieurs clés étrangères. Je tente d'insérer une ligne dans cette table en ne remplissant dans un premier temps que le champ clé primaire : mySQL ne veut pas :"impossible d'ajouter un enregistrement fils, une contrainte externe l'empêche"...
Je précise que j'ai autorisé les clés étrangères à être nulles. Pouvez-vous m'aider s'il vous plaît ? Est-il vraiment impossible d'insérer une ligne sans avoir à préciser la valeur de toutes les clés étrangères ? |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : avril 2006 Messages : 110 ![]() |
J'ai trouvé ça dans le tuto InnoDB d'Olivier Miossec (sur le site) :
"Par défaut, cette contrainte [=la contrainte de clé étrangère] empêche la création d’enregistrements dans la table secondaire sans qu’aucune référence ne soit possible. " Ce qui répondrait à ma question : il faut que toutes les références soient possibles lors de la création d'un enregistrement... Avant de me résigner à cette énième goutte d'eau supplémentaire dans le vase de ma considération pour les contraintes d'intégrité des tables InnoDB, J'aimerais bien avoir la confirmation d'un spécialiste s'il vous plait ! |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : avril 2006 Messages : 110 ![]() |
Voilà la méthode que j'ai utilisé pour résoudre le pb :
- j'ai enlevé toutes les clés étrangères de ma table - j'ai inséré un enregistrement sans pb - j'ai ajouté une clé étrangère - j'ai ajouté un enregistrement sans pb - j'ai ajouté une deuxième clé - j'ai ajouté un enregistrement sans pb - etc... - mais il y a une clé que je n'ai pas pu ajouter : c'est elle qui faisait tout coincer - j'ai carrément supprimé la colonne correspondante et je l'ai recréée à l'identique en ajoutant la clé ensuite - toutes les clés étaient là : j'ai ajouté un enregistrement sans pb Ok ça n'explique pas où était le pb mais au moins il est résolu... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com