Bonjour,
Je vous ai abandonné un temps, mais je ne vous oublie pas.
Je ne connais pas grand-chose à MySQL, mais en consultant le document « Manuel de référence MySQL 5.0 », au paragraphe 15.7.4 « Contraintes de clés étrangères FOREIGN KEY », on lit ceci :
Si MySQL vous retourne une numéro d'erreur 1005 lors de la comande CREATE TABLE, et un message d'erreur de numéro 150, alors la création de la table a échoué à cause de la contrainte de clé étrangère, qui n'a pas été correctement formulée. Similairement, si une commande ALTER TABLE échoue et indique une erreur 150, c'est que la définition de la clé étrangère est incorrectement formulée dans la table modifiée. Depuis la version 4.0.13, vous pouvez utiliser la commande SHOW INNODB STATUS pour avoir une explication détaillée de la dernière erreur de clé étrangère InnoDB sur le serveur.
Une question donc : le type de l’attribut u_id est-il le même dans les deux table en cause ?
Par ailleurs, la table UTILISATEUR est référencée par quelques autres tables : NOTER_ARTICLE, STATISTIQUES, SONDAGE_CHOISIR_POSSIBILITE, COMMENTAIRE, FICHIER_GPS_SANS_ARTICLE, ARTICLE_UTIL.
Si les tables appartiennent à des schémas (au sens SQL) distincts, ne pourrait-on pas envisager de considérer la table UTILISATEUR comme une image de la table FSB2_USERS et d’établir la contrainte référentielle seulement entre ces deux tables ?
1 2 3
| ALTER TABLE UTILISATEUR ADD CONSTRAINT FK_UTILISATEUR
FOREIGN KEY (id_utilisateur) REFERENCES FSB2_USERS(u_id)
ON DELETE ... ON UPDATE RESTRICT ; |
![](http://www.fsmwarden.com/developpez_2/heretik25(recursivite)Utilisateurs_MCD.png)
Mais il semble que toutes les tables sont maintenant dans le même schéma.
Partager