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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ALTER TABLE `Artists` ADD INDEX ( `idArtist` ) ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
#1005 - Can't create table './db272742205/Art_Styl.frm' (errno: 150)

Connaissez-vous la solution ?

Merci beaucoup d'avance,