У меня есть две таблицы базы данных, которые я только что обнаружил без отношения внешнего ключа в определенном столбце.Оба столбца имеют значение VARCHAR(45) NON NULL
, но по какой-либо причине они выбрасывают ERROR 1452: Cannot add or update a child row: a foreign key constraint fails
.Я сделал SHOW ENGINE INNODB STATUS;
, как предложено во многих сообщениях на SO, и это дает следующий блок ошибок
LATEST FOREIGN KEY ERROR
------------------------
2019-04-02 17:08:10 0x3a50 Transaction:
TRANSACTION 1679595, ACTIVE 0 sec inserting, thread declared inside InnoDB 4965
mysql tables in use 2, locked 2
9 lock struct(s), heap size 1136, 22 row lock(s), undo log entries 18
MySQL thread id 53, OS thread handle 14928, query id 341954 localhost ::1 root copy to tmp table
ALTER TABLE `dbtest`.`task`
ADD CONSTRAINT `FK_planning_recurring_uid`
FOREIGN KEY (`recurring_uid`)
REFERENCES `dbtest`.`planning` (`recurring_uid`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
Foreign key constraint fails for table `dbtest`.`#sql-f70_35`:
,
CONSTRAINT `FK_planning_recurring_uid` FOREIGN KEY (`recurring_uid`) REFERENCES `planning` (`recurring_uid`) ON DELETE NO ACTION ON UPDATE NO ACTION
Trying to add in child table, in index FK_planning_recurring_uid_idx tuple:
DATA TUPLE: 2 fields;
0: len 36; hex 61393062326434362d313737632d343237302d396537662d396138363766346235363635; asc a90b2d46-177c-4270-9e7f-9a867f4b5665;;
1: len 4; hex 80000028; asc (;;
But in parent table `dbtest`.`planning`, in index recurring_uid_index,
the closest match we can find is record:
PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 30; hex 61393233626432322d623439332d343662392d623435312d393964363363; asc a923bd22-b493-46b9-b451-99d63c; (total 36 bytes);
1: len 4; hex 80050ffd; asc ;;
Это не явная ошибка, на которую я надеялся.Не могу ли я создать внешний ключ с нулевыми значениями без предварительной очистки базы данных, или я делаю что-то не так?Я уже проверил значения, которые существуют в одной таблице, которые не существуют в другой, но я не смог найти их.