0
У меня есть две таблицы и попытаться создать ограничение внешнего ключа, и я получаю сообщение об ошибке:Внешняя ошибка ключ на MySQL
[SQL] ALTER TABLE `defectstdreference`
ADD CONSTRAINT `Relationship72` FOREIGN KEY (`improve_notice_doc_id`, `defect_id`, `client_id`) REFERENCES `improvementnoticedefect` (`doc_id`, `defect_id`, `client_id`);
[Err] 1215 - Cannot add foreign key constraint
Вот мои таблицы:
CREATE TABLE `improvementnoticedefect` (
`defect_id` int(11) NOT NULL,
`doc_id` bigint(20) NOT NULL,
`client_id` bigint(20) NOT NULL,
`description` varchar(20000) NOT NULL,
PRIMARY KEY (`defect_id`,`doc_id`,`client_id`),
KEY `Relationship68` (`doc_id`,`client_id`),
CONSTRAINT `Relationship68` FOREIGN KEY (`doc_id`, `client_id`) REFERENCES `improvementnotice` (`doc_id`, `client_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Второй:
CREATE TABLE `defectstdreference` (
`reference_id` bigint(20) NOT NULL AUTO_INCREMENT,
`std_doc_id` bigint(20) NOT NULL,
`improve_notice_doc_id` bigint(20) NOT NULL,
`defect_id` int(11) NOT NULL,
`paragraph` varchar(4000) NOT NULL,
`client_id` bigint(20) NOT NULL,
PRIMARY KEY (`reference_id`),
KEY `Relationship70` (`std_doc_id`),
CONSTRAINT `Relationship70` FOREIGN KEY (`std_doc_id`) REFERENCES `std` (`doc_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
И запрос на добавление внешних ключей:
ALTER TABLE `defectstdreference`
ADD CONSTRAINT `Relationship72` FOREIGN KEY (`improve_notice_doc_id`, `defect_id`, `client_id`) REFERENCES `improvementnoticedefect` (`doc_id`, `defect_id`, `client_id`);
Фактически этот запрос выполняется SymmetricDS с помощью драйвера mysql jdbc.
Любая помощь приветствуется
'ЛИТЕРАТУРЫ improvementnoticedefect (doc_id, defect_id, client_id)' в 'improvementnoticedefect' таблице вы объявляете ключ как' PRIMARY KEY (defect_id, DOC_ID, CLIENT_ID) ', который имеет поля в другом порядке. попробуйте привести их в порядок –
Да, это сработало! – SMSk
oh отлично. я просто попробовал это и получил аналогичную ошибку, поэтому добавил это как ответ, а –