Saya menguji pembuatan tabel Anda.
Kemudian saya mendapat informasi lebih lanjut tentang kesalahan kunci asing:
mysql> show engine innodb status\G
------------------------
LATEST FOREIGN KEY ERROR
------------------------
2018-02-20 14:51:33 700002d90000 Error in foreign key constraint of table calls/called:
FOREIGN KEY (`Code`)
REFERENCES `calls`.`city` (`Code`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `Number`
FOREIGN KEY (`Number`)
REFERENCES `calls`.`subscriber` (`Number`)
ON DELETE CASCADE
ON UPDATE CASCADE):
Cannot find an index in the referenced table where the
referenced columns appear as the first columns, or column types
in the table and the referenced table do not match for constraint.
...
Saya melihat masalahnya:Anda memiliki kunci utama majemuk di city
pada kolom (Name, Code)
. Untuk ini, Anda harus membuat satu referensi batasan kunci asing keduanya kolom kunci utama induk.
Seperti ini:
CONSTRAINT `Name`
FOREIGN KEY (`Name`, `Code`)
REFERENCES `calls`.`city` (`Name`, `Code`)
ON DELETE CASCADE
ON UPDATE CASCADE
Jangan nyatakan batasan untuk setiap kolom — nyatakan satu batasan yang mereferensikan kedua kolom kunci.