Bonjour tout le monde,
Voici le problème qui m'empêche d'avancer :
J'ai deux tables : Artiste et Styles :
- Un artiste peut jouer dans plusieurs styles.
- Un style a plusieurs artistes associés.
==> Relation de type *..*
Je souhaite pouvoir lister tous les artistes jouant dans un style précis.
J'ai donc créé une table Artiste_styles qui comporte une clé primaire composée :
-idArtiste (clé primaire de la table Artiste)
-idStyle (clé primaire de la table Styles).
Les clef idArtiste et idStyle sont en Index dans leur tables respectives :
ALTER TABLE `Artists` ADD INDEX ( `idArtist` ) ;
ALTER TABLE Styles ADD INDEX (idStyle) ;
--> Mes 3 tables sont de type InnoDB.
Lorsque je tente de lier les champs idArtist et idStyle de la table d'association Artiste_style aux champs des tables Artisteet Style grace à l'interface de phpmyadmin , j'ai l'erreur suivante :
A noter que les tables Artiste et Style ne sont pas vides...
J'ai essayé de créer les contraintes via la fenêtre SQL à la création de la table
1 2 3 4 5 6 7
| CREATE TABLE Art_Styl(
idArtist VARCHAR( 30 ) NOT NULL,
idStyle VARCHAR( 30 ) NOT NULL,
CONSTRAINT pk_art_style PRIMARY KEY (idArtist, idStyle),
CONSTRAINT fk_artist FOREIGN KEY ( idArtist ) REFERENCES Artists( idArtist ),
CONSTRAINT fk_styles FOREIGN KEY ( idStyle ) REFERENCES Styles( idStyle )
) TYPE = InnoDB; |
Mais rien à faire, j'ai l'erreur :
#1005 - Can't create table './db272742205/Art_Styl.frm' (errno: 150)
Connaissez-vous la solution ?
Merci beaucoup d'avance,
Partager