Mysql
 sql >> Base de données >  >> RDS >> Mysql

Code d'erreur :1822 lorsque les types de données correspondent, avec une clé composée

Le problème est dû au fait que la clé étrangère, subj_code , fait partie d'une multi-colonne clé primaire (PK) dans la table référencée enrolment :

primary key (stud_id, subj_code, semester, year)

où cette colonne (subj_code ) n'est pas le plus à gauche .

Tableau student n'a pas ce problème car sa colonne de clé étrangère stud_id est la colonne la plus à gauche du PK dans le tableau référencé.

Pour résoudre ce problème, vous pouvez créer un nouvel index pour la colonne référencée :

ALTER TABLE enrolment ADD INDEX subj_code_idx (subj_code);

Remarque : Il faut faire de même pour la table référencée grade dans l'autre clé étrangère.

Démo ici