Ошибка вставки в данные после восстановления внешнего ключа. MySQL переполнение стека

У меня есть две таблицы: IDCa и IDCb. В начале каждая таблица содержит данные и работает нормально. Таблица IDCb имеет внешний ключ sheetNum с первичным ключом IDCa sheetNum.

Когда я переименовал IDCa в IDCabk и сбросил IDCa, это сработало.
Итак, я запустил: set foreign_key_checks = 0
, удалите таблицу IDCa, создайте таблицу IDCa наподобие IDCabk.

Теперь IDCa пуста. После этого я обнаружил, что таблица ССЫЛКИ IDCb изменилась с IDCa на IDCabk. Поэтому я отбрасываю внешний ключ IDCb и читаю как:

alter table IDCb add constraint fk_dvcOnsh foreign key (sheetNum) references IDCa(sheetNum);

После того, как я запустил: set foreign_key_checks = 1, и попытался вставить в данные. Но, к сожалению, это работает неудачно. Кажется, ничего плохого.

Вот информация IDCa, запустите: show create table IDCa:

|IDCa        | CREATE TABLE `IDCa` (
`sheetNum` int(255) NOT NULL AUTO_INCREMENT,
.........
PRIMARY KEY (`sheetNum`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

Вот информация IDCb, выполните : show create table IDCb:

 |IDCb        | CREATE TABLE `IDCb` (
`id` int(255) NOT NULL AUTO_INCREMENT,
......
`sheetNum` int(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_dvcOnsh` (`sheetNum`),
CONSTRAINT `fk_dvcOnsh` FOREIGN KEY (`sheetNum`) REFERENCES `IDCa` (`sheetnum`)
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8

Мой код вставки в данные:

 $conn->beginTransaction();
$query="insert into IDCa(xxx) values('aaa')";
$stmt=$conn->query($query);
$stmt->closeCursor();

$query="insert into IDCb(rrr,sheetNum) values('aaa',LAST_INSERT_ID())";
$stmt=$conn->query($query);
$stmt->closeCursor();
$conn->commit();

Показать ошибку:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`hpc`.`IDCb`, CONSTRAINT `fk_dvcOnsh` FOREIGN KEY (`sheetnum`) REFERENCES `IDCa` (`sheetnum`))fail

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector