Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2008, 07h45   #1
Invité de passage
 
Inscription : juin 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 17
Points : 3
Points : 3
Par défaut [MySQL] une erreur à l'ajout d'une clé étrangère

Bonjour à tous,

alors voilà j'ai mes tables comme il fallait sans erreure ni rien (en INNODB) et j'ai voulu rajouté un clé étrangère et il me donne une erreur sans trop d'explication:

Code :
#1005 - Can't create table '.\films\#sql-808_11.frm' (errno: 150)

ma requète:

Code :
1
2
ALTER TABLE membre ADD FOREIGN KEY ( ID_membre ) 
REFERENCES films( ajoute_par_films ) ;


les champs à lier:

Code :
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE membre (
...
ID_membre integer(2),
...
);
 
CREATE TABLE films (
...
ajoute_par_films integer(2)
...
);



(ID_membre => PRIMARY KEY)

voilà je ne comprend pas ce qui ne va pas... une idée?

merci beaucoup d'avance
Stuff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2008, 10h27   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 034
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 034
Points : 18 324
Points : 18 324
Envoyer un message via MSN à CinePhil
Si ID_membre est déjà clé primaire, c'est plutôt bizarre qu'il devienne tout seul clé étrangère non ?

N'est-ce pas plutôt 'films' qui doit accueillir la clé étrangère ID_membre ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2008, 10h41   #3
Invité de passage
 
Inscription : juin 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 17
Points : 3
Points : 3
C'est vrai tu as raison je n'avais pas fais attention.
j'ai donc essayé de l'ajouté à la table films:

Code :
1
2
ALTER TABLE films 
ADD FOREIGN KEY (ajoute_par_films) REFERENCES membre(ID_membre);
et il me renvoi l'erreur suivante:

Code :
#1216 - cannot add or update a child row: a foreign key constraint fails
ce à quoi j'ai répondu^^ :

Code :
1
2
ALTER TABLE films
ADD CONSTRAINT fk_films FOREIGN KEY (ajoute_par_films) REFERENCES membre(ID_membre);
et il m'a ressortit la même erreur...
je connais très mal les contrainte j'ai du faire une erreur mais laquelle...
si c'est autre chose je ne vois pas quoi...

je vais conitnuer de chercher mais si vous avez une idée
Stuff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2008, 11h28   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 034
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 034
Points : 18 324
Points : 18 324
Envoyer un message via MSN à CinePhil
L'erreur signifie que tu as déjà des données dans ajoute_par_film qui sont inexistantes dans ID_member.

Respectant la contrainte, il t'interdit donc de créer la clé étrangère parce qu'il ne peut la satisfaire.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2008, 12h47   #5
Invité de passage
 
Inscription : juin 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 17
Points : 3
Points : 3
tous marche bien merci à toi

dsl pour les questions un peu "bête" mais je débute alors

en tout cas merci beaucoup
Stuff est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h34.


 
 
 
 
Partenaires

Hébergement Web