sql >> Databáze >  >> RDS >> Mysql

Kód chyby:1822, když se datové typy shodují, se složeným klíčem

Problém je způsoben tím, že cizí klíč subj_code , je součástí více sloupců primární klíč (PK) v odkazované tabulce enrolment :

primary key (stud_id, subj_code, semester, year)

kde tento sloupec (subj_code ) není úplně vlevo .

Tabulka student nemá tento problém, protože jeho sloupec cizího klíče stud_id je sloupec zcela vlevo PK v odkazované tabulce.

Chcete-li tento problém vyřešit, můžete vytvořit nový index pro odkazovaný sloupec:

ALTER TABLE enrolment ADD INDEX subj_code_idx (subj_code);

Poznámka: Totéž musíte udělat pro odkazovanou tabulku grade v druhém cizím klíči.

Ukázka zde



  1. Jak funguje operátor RLIKE v MySQL

  2. Smazat dotaz nefunguje v mysql

  3. JDBC url pro konfiguraci MySQL pro použití kódování znaků utf8

  4. Získat ŘÁDKY jako SLOUPCE (dynamický dotaz PIVOT pro SQL Server)