Mysql
 sql >> Database >  >> RDS >> Mysql

Codice di errore:1822 quando i tipi di dati corrispondono, con chiave composta

Il problema è dovuto al fatto che la chiave esterna, subj_code , fa parte di una multicolonna chiave primaria (PK) nella tabella di riferimento enrolment :

primary key (stud_id, subj_code, semester, year)

dove questa colonna (subj_code ) è non quello più a sinistra .

Tabella student non ha questo problema perché la sua colonna della chiave esterna stud_id è la colonna più a sinistra della PK nella tabella di riferimento.

Per risolvere questo problema puoi creare un nuovo indice per la colonna referenziata:

ALTER TABLE enrolment ADD INDEX subj_code_idx (subj_code);

Nota: Devi fare lo stesso per la tabella di riferimento grade nell'altra chiave esterna.

Dimostrazione qui