Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Código de erro:1822 quando os tipos de dados são correspondentes, com chave composta


O problema se deve ao fato de que a chave estrangeira, subj_code , faz parte de um multicoluna chave primária (PK) na tabela referenciada enrolment :
primary key (stud_id, subj_code, semester, year)

onde esta coluna (subj_code ) não é o mais à esquerda .

Tabela student não tem esse problema porque sua coluna de chave estrangeira stud_id é a coluna mais à esquerda do PK na tabela referenciada.

Para resolver isso, você pode criar um novo índice para a coluna referenciada:
ALTER TABLE enrolment ADD INDEX subj_code_idx (subj_code);

Observação: Você tem que fazer o mesmo para a tabela referenciada grade na outra chave estrangeira.

Demonstração aqui