Simply put, authorised_values_branches has two columns both of which should have FK constraints, but neither do!
Kyle, they both have the correct foreign key: CREATE TABLE authorised_values_branches( -- association table between authorised_values and branches av_id INT(11) NOT NULL, branchcode VARCHAR(10) NOT NULL, FOREIGN KEY (av_id) REFERENCES authorised_values(id) ON DELETE CASCADE, FOREIGN KEY (branchcode) REFERENCES branches(branchcode) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;