2012-01-10 80 views
1

編輯:Mysql錯誤#1452 - 無法添加或更新子行

我的問題是因爲表使用不同的引擎。使用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)參考文獻ChartidChart)ON DELETE CASCADE ON UPDATE CASCADE;

+0

你可以在你的問題中包含失敗的SQL INSERT語句嗎? – 2012-01-10 10:42:38

+0

我已將它添加到問題中。 – 2012-01-10 10:50:38

+0

我的問題是因爲使用不同引擎的表。使用MyISAM和Chartdata使用的表格使用InnoDB。 – 2012-01-10 11:56:47

回答

2

我的問題是因爲使用不同引擎的表。使用MyISAM和Chartdata使用的表格使用InnoDB。

0

刪除INSERT查詢中的NULL,因爲列idChartdata設置爲Auto_Increment並重試。

INSERT INTO `charts`.`Chartdata`(`param1` ,`param2` ,`Chart_id`) 
VALUES ('2012-01-10 05:00:00', '58', '3') 
+0

這沒有奏效,而且null是由phpmyadmin添加的。根據mysql你可以使用NULL來「明確地分配NULL或0到列來生成序列號」 – 2012-01-10 10:56:56

0

您正試圖向chartdata添加一行,Chart_id = 3。是否有一個idChart = 3的圖表? Trie首先添加id = 3的圖表,然後執行查詢。

Nvm,你已經解決了。 :D

相關問題