Ограничение внешнего ключа не работает в операторе изменения таблицы SQL и phpmyadmin

Я использую 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")

"PK is ID, index leadID" В этом коде нет такого объявления. Что ты имеешь в виду?

philipxy 10.04.2022 06:23

Можете ли вы создать схему/создать таблицу для идентификатора человека и запрос, который вы пытаетесь сделать.

silverdagger 10.04.2022 06:59
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
2
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

я думаю, вам нужен первичный ключ для настольной песни, тогда вы можете попробовать снова сделать FK

Ссылка : https://www.w3schools.com/sql/sql_foreignkey.asp

Другие вопросы по теме