Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec 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 20/12/2010, 00h37   #1
Invité régulier
 
Inscription : octobre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 9
Points : 7
Points : 7
Par défaut Déclaration de clef étrangere (débutant)

Bonjour,

Lorsque j'écris ceci :
Code :
1
2
3
4
 
ALTER TABLE `eleve`
ADD constraint fk1 FOREIGN KEY (`idCategorie`) REFERENCES categorie (`idCategorie`)
ADD constraint fk2 FOREIGN KEY (`idNiveau`) REFERENCES niveau (`idNiveau`)
J'obtiens ce message d'erreur :

Citation:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint fk1 foreign key (`idCategorie`) references categorie (`idCategorie`) ' at line 2
J'ai beau avoir retourné la chose dans tous les sens, je n'arrive pas a déclarer ces clefs étrangères. Quelqu'un saurait-il pourquoi ?
Sorel36 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 10h13   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

il faut une virgule avant le deuxieme ADD
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 10h45   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 980
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 : 10 980
Points : 18 225
Points : 18 225
Envoyer un message via MSN à CinePhil
Et il faut que tes tables soient en InnoDB pour que les clés étrangères soient prises en compte.
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 14h00   #4
Invité régulier
 
Inscription : octobre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 9
Points : 7
Points : 7
Merci pour vos réponses,

J'ai rajouté une virgule apres le 2nd ADD, j'obtiens un message d'erreur. idCategorie et idNiveau sont déclarés dans les deux tables en varchar (20) mais j'ai une erreur 150 :

#1005 - Can't create table 'gestioneleves.#sql-518_20' (errno: 150) :

Voici le code :
Code sql :
1
2
ALTER TABLE `eleve`  ADD CONSTRAINT fk1 FOREIGN KEY ( `idCategorie` ) REFERENCES categorie( `idCategorie` ) ,
ADD CONSTRAINT fk2 FOREIGN KEY ( `idNiveau` ) REFERENCES niveau( idNiveau )

J

J'ai trouvé. Certaines de mes tables n'étaient pas en InnoDB. Merci pour vos réponses.
Sorel36 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 09h14.


 
 
 
 
Partenaires

Hébergement Web