Bonjour, bonsoir,

Tout premièrement, je m'excuse si ce message est dans la mauvaise section, mais l'ambiguïté d'utiliser les scripts SQL avec phpMyAdmin...

Bien, avant le problème en lui-même, je vais vous donner le contexte.
Dans le cadre d'un projet universitaire, je dois réaliser une application en ligne de gestion d'une partie d'un jeu de role.
J'ai pour ça dans ma base de données, entre autres:
-une table "royaume", qui stocke les royaumes créés
-une table "auth_table", qui stocke les utilisateurs
-une table "acces_royaume", qui stocke l'association des deux tables précédentes, indiquant quels utilisateurs ont accès à quels royaumes.

Voici le code de création des tables en question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
CREATE TABLE IF NOT EXISTS `auth_table` (
  `user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL DEFAULT '',
  `password` varchar(32) NOT NULL DEFAULT '',
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
CREATE TABLE IF NOT EXISTS `royaume` (
  `idRoyaume` int(11) NOT NULL AUTO_INCREMENT,
  `idMj` int(11) NOT NULL,
  `adresseCarte` varchar(50) NOT NULL COMMENT 'Pour stocker l''adresse relative de l''image d''une carte, afin de se conformer à l''exigence de pouvoir changer de carte',
  `nomRoyaume` varchar(20) NOT NULL,
  `alignement` varchar(20) NOT NULL,
  `ddControle` int(11) NOT NULL,
  `taille` int(11) NOT NULL,
  `economie` int(11) NOT NULL,
  `loyaute` int(11) NOT NULL,
  `stabilite` int(11) NOT NULL,
  `corruption` int(11) NOT NULL,
  `criminalite` int(11) NOT NULL,
  `loi` int(11) NOT NULL,
  `folklore` int(11) NOT NULL,
  `productivite` int(11) NOT NULL,
  `societe` int(11) NOT NULL,
  `gloire` int(11) NOT NULL,
  `infamie` int(11) NOT NULL,
  `niveauPublicite` int(11) NOT NULL,
  `niveauTaxation` int(11) NOT NULL,
  `festivals` int(11) NOT NULL,
  `insatisfaction` int(11) NOT NULL,
  `consommation` int(11) NOT NULL,
  `pointsConstruction` int(11) NOT NULL,
  `tresorerie` int(11) NOT NULL,
  `idDirigeant` int(11) NOT NULL,
  `idDirigeantSecondaire` int(11) NOT NULL,
  `idConsort` int(11) NOT NULL,
  `idConseiller` int(11) NOT NULL,
  `idGeneral` int(11) NOT NULL,
  `idGrandDiplomate` int(11) NOT NULL,
  `idHeritier` int(11) NOT NULL,
  `idGrandPretre` int(11) NOT NULL,
  `idGrandErudit` int(11) NOT NULL,
  `idMarechal` int(11) NOT NULL,
  `idAgentOrdreRoyal` int(11) NOT NULL,
  `idChefServicesSecrets` int(11) NOT NULL,
  `idTresorier` int(11) NOT NULL,
  `idViceRoi` int(11) NOT NULL,
  `idGrandprotecteur` int(11) NOT NULL,
  PRIMARY KEY (`idRoyaume`),
  KEY `royaume_ibfk_1` (`idDirigeant`),
  KEY `royaume_ibfk_2` (`idDirigeantSecondaire`),
  KEY `royaume_ibfk_3` (`idConsort`),
  KEY `royaume_ibfk_4` (`idConseiller`),
  KEY `royaume_ibfk_5` (`idGeneral`),
  KEY `royaume_ibfk_6` (`idGrandDiplomate`),
  KEY `royaume_ibfk_7` (`idHeritier`),
  KEY `royaume_ibfk_8` (`idGrandPretre`),
  KEY `royaume_ibfk_9` (`idGrandErudit`),
  KEY `royaume_ibfk_10` (`idMarechal`),
  KEY `royaume_ibfk_11` (`idAgentOrdreRoyal`),
  KEY `royaume_ibfk_12` (`idChefServicesSecrets`),
  KEY `royaume_ibfk_13` (`idTresorier`),
  KEY `royaume_ibfk_14` (`idViceRoi`),
  KEY `royaume_ibfk_15` (`idGrandprotecteur`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
CREATE TABLE IF NOT EXISTS `acces_royaume` (
  `idAcces` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `idRoyaume` int(11) NOT NULL,
  PRIMARY KEY (`idAcces`),
  KEY `fk_acces_royaume` (`idRoyaume`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Mon problème est le suivant.

Après avoir réussi à définir la clé étrangère entre la table "acces_royaume" et "royaume" sur l'attribut "idRoyaume",
il m'est impossible de faire de même entre "acces_royaume" et "auth_table" sur "user_id".
Le code de la requête que je tente:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
ALTER TABLE acces_royaume
ADD CONSTRAINT fk_acces_user
FOREIGN KEY(user_id)
REFERENCES auth_table(user_id);
Le code d'erreur obtenu: #1215 - Cannot add foreign key constraint

Si l'un d'entre vous pourrait venir éclaircir ma lanterne, je lui en serait infiniment reconnaissant, cela fait un moment que je penche dessus, et je n'ai trouvé de réponse nulle part.