РЕДАКТИРОВАТЬ:
Моя проблема была из-за таблиц используются разные движки.Таблица Chart используется MyISAM и Chartdata используется InnoDB.
У меня очень простая модель БД, но по какой-то причине я не могу заставить работать внешний ключ.Я создал базу данных с помощью Mysql Workbench, и у меня есть две строки в таблице Chart с идентификаторами 3 и 4. Когда я пытаюсь добавить строку в chartdata, я получаю эту ошибку:
INSERT INTO `charts`.`Chartdata` (
`idChartdata` ,
`param1` ,
`param2` ,
`Chart_id`
)
VALUES (
NULL , '2012-01-10 05:00:00', '58', '3'
)
#1452 - Cannot add or update a child row: a foreign key constraint fails (
charts .
Chartdata , CONSTRAINT
fk_Chartdata_Chart FOREIGN KEY (
Chart_id ) REFERENCES
Диаграмма (
idChart ) ON DELETE CASCADE ON UPDATE CASCADE)
Я уверен, что внешний ключ существует, и я пытался воссоздать таблицы в строгое время(с небольшими изменениями).
Ссылка на модель БД: http://i.stack.imgur.com/qKZlh.png
Это дамп SQL от PhpMyAdmin:
CREATE TABLE IF NOT EXISTS `Chartdata` (
idChartdata
int (11) NOT NULL AUTO_INCREMENT, param1
varchar (500) DEFAULT NULL, param2
varchar (500) DEFAULT NULL, Chart_id
int (11) НЕ NULL, ПЕРВИЧНЫЙ КЛЮЧ (idChartdata
, Chart_id
), KEY fk_Chartdata_Chart
(Chart_id
)) ENGINE = InnoDB CHARSET ПО УМОЛЧАНИЮ = latin1 AUTO_INCREMENT = 10;
ALTER TABLE Chartdata
ADD CONSTRAINT fk_Chartdata_Chart
Иностранный ключ (Chart_id
) Ссылки Chart
(idChart
) УДАЛИТЬ КАСКАД ОБНОВИТЬ КАСКАД;