У меня есть таблица, содержащая 2 записи.
Что-то вроде
CREATE TABLE `db`.`main` (
`id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
);
Идентификатором для этих 2 записей являются автоматически генерируемые первичные ключи.
У меня есть другая таблица со связующим правилом
CREATE TABLE `db`.`day` (
`main_id` int(10) unsigned NOT NULL,
`day` tinyint(4) NOT NULL,
CONSTRAINT `fk_db_main` FOREIGN KEY (`main_id`) REFERENCES `main` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
);
теперь я могу успешно получить результат, используя
SELECT * FROM main where id='9';
но когда я пытаюсь запустить
INSERT INTO day (main_id, day) VALUES (9, 0);
Я получаю
"Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (db
. day
, CONSTRAINT fk_db_main
FOREIGN KEY (main_id
) ССЫЛКИ main
(id
) ВКЛ ОБНОВЛЕНИЕ НЕТ ДЕЙСТВИЙ) (1452) "
Любые предложения о том, что мне не хватает со вставкой?
** Я не указал действительную причину проблемы, когда задавал вопрос. Фактическая причина состояла в том, что главная таблица базы данных была в MyISAM, и таблицы InnoDB не могли создать внешний ключ, соединяющийся с ним. Короче говоря, MyISAM не поддерживает внешние ключи, даже если они приходят из других таблиц.