У меня есть две таблицы, как показано ниже
1:
Имя таблицы: родитель
Столбцы: parent_id (первичный ключ), заголовок
2:
Название таблицы: ребенок
Столбцы: child_id (первичный ключ), title, fk_pid (проиндексированный)
Я хочу сделать ссылку между prent.parent_id
а также child.fk_pid
, Я установил тип обеих таблиц InnoDB. Я открыл «представление отношений» в структуре дочерней таблицы. Затем я выбрал ограничение внешнего ключа для child.fk_pid
и установить parent.parent_id
и установите параметры, как показано ниже
имя ограничения: myFK
при удалении: ограничить
на обновление: ограничить
но когда я нажимаю на кнопку сохранения, PHPMyAdmin выдает следующую ошибку.
#1452 - Cannot add or update a child row: a foreign key constraint fails (`fk`.`#sql-168_5f`, CONSTRAINT `myFk` FOREIGN KEY (`fk_pid`) REFERENCES `parent` (`parent_id`))
Помогите мне, пожалуйста
MySQL не создаст внешний ключ, если у вас есть fk_pid в дочерней таблице, который не существует в качестве идентификатора в родительской таблице. Проверьте дочернюю таблицу на наличие ссылок на родительский идентификатор, которых нет в родительской таблице.
select fk_pid from child left join parent on child.fk_pid = parent.id where parent.id is null;
Других решений пока нет …