Я использую phpmyadmin с SQL, и у меня было более раннее утверждение о точной структуре работы с внешним ключом personID для идентификатора в таблице лиц, я не уверен, почему это не сработает, кто-нибудь знает? Допускаются два внешних ключа, поэтому я не уверен. Движок ENGINE=InnoDB, и просто для проверки я безуспешно добавил это в оператор внешнего ключа.
Обновлять: У меня снова возникла похожая ситуация, когда не работал только внешний ключ с таблицей песен, но работал другой ключ с такой же структурой.
--
-- Constraints for table `part_of`
--
ALTER TABLE `part_of`
ADD CONSTRAINT `part_of_ibfk2` FOREIGN KEY (`songID`) REFERENCES `song` (`ID`)
ON UPDATE CASCADE
ON DELETE CASCADE;
Вот таблица part_of:
--
-- Table structure for table `part_of`
--
CREATE TABLE `part_of` (
`personID` int(6) NOT NULL,
`songID` int(6) NOT NULL,
`role` varchar(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Вот таблица песен:
--
-- Table structure for table `song` PK is ID, index leadID
--
CREATE TABLE `song` (
`ID` int(6) NOT NULL,
`title` varchar(10) DEFAULT NULL,
`run_time` varchar(10) DEFAULT NULL,
`lyrics` varchar(255) DEFAULT NULL,
`leadID` int(6) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Ошибка
Error
SQL query: Copy
MySQL said: Documentation
#1005 - Can't create table `musicdb`.`part_of` (errno: 150 "Foreign key constraint is incorrectly formed")
Можете ли вы создать схему/создать таблицу для идентификатора человека и запрос, который вы пытаетесь сделать.
я думаю, вам нужен первичный ключ для настольной песни, тогда вы можете попробовать снова сделать FK
"PK is ID, index leadID" В этом коде нет такого объявления. Что ты имеешь в виду?