sql >> Base de Datos >  >> RDS >> Mysql

Código de error:1822 cuando los tipos de datos coinciden, con clave compuesta

El problema se debe al hecho de que la clave externa, subj_code , es parte de una varias columnas clave principal (PK) en la tabla referenciada enrolment :

primary key (stud_id, subj_code, semester, year)

donde esta columna (subj_code ) no es el más a la izquierda .

Tabla student no tiene este problema porque su columna de clave externa stud_id es la columna más a la izquierda del PK en la tabla a la que se hace referencia.

Para resolver esto, puede crear un nuevo índice para la columna a la que se hace referencia:

ALTER TABLE enrolment ADD INDEX subj_code_idx (subj_code);

Nota: Tienes que hacer lo mismo para la tabla referenciada grade en la otra clave foránea.

Demostración aquí