我的問題是因爲表使用不同的引擎。使用MyISAM和Chartdata使用的表格使用InnoDB。
我有一個非常簡單的數據庫模型,但由於某種原因,我不能讓外鍵工作。我創建了與MySQL Workbench中的DB和我在「圖表」表兩列編號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 (
圖表.
Chartdata , CONSTRAINT
fk_Chartdata_Chart FOREIGN KEY (
Chart_id ) REFERENCES
圖(
idChart ) ON DELETE CASCADE ON UPDATE CASCADE)
我確信,外鍵存在,我試圖重新創建表severeal次(輕微改變)。
鏈接到DB模式:http://i.stack.imgur.com/qKZlh.png
這是phpMyAdmin的一個SQL轉儲:
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)NOT NULL, PRIMARY KEY(idChartdata
,012引擎= InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 10;引擎= InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 10;引擎= InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 10;
ALTER TABLE Chartdata
ADD CONSTRAINT fk_Chartdata_Chart
外鍵(Chart_id
)參考文獻Chart
(idChart
)ON DELETE CASCADE ON UPDATE CASCADE;
你可以在你的問題中包含失敗的SQL INSERT語句嗎? – 2012-01-10 10:42:38
我已將它添加到問題中。 – 2012-01-10 10:50:38
我的問題是因爲使用不同引擎的表。使用MyISAM和Chartdata使用的表格使用InnoDB。 – 2012-01-10 11:56:47