2012-01-10 8 views
1

編集:Mysqlエラー#1452 - 子行を追加または更新できません

私の問題は、異なるエンジンを使用していたテーブルのためです。使用されるテーブルチャートMyISAMとChartdataはInnoDBを使用しました。


私は非常に単純なDBモデルを持っていますが、何らかの理由で私は外来キーが機能しなくなっています。私はこのエラーを取得する私は、MySQL WorkbenchでDBを作成していると私はchartdata内の行を追加しようとすると、私はIDが3と4で「チャート」テーブルに2つの行を持っている:

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、 プライマリキー(idChartdataChart_id)、 KEY fk_Chartdata_ChartChart_id) )ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 10;

ALTER TABLE Chartdata のADD CONSTRAINT fk_Chartdata_Chart FOREIGN KEY(Chart_id)UPDATE CASCADE ON DELETE CASCADE ON ChartidChart)を参照。

+0

質問に失敗したSQL INSERT文を含めることはできますか? –

+0

私は質問に追加しました。 –

+0

私の問題は、異なるエンジンを使用しているテーブルのためです。使用されるテーブルチャートMyISAMとChartdataはInnoDBを使用しました。 –

答えて

2

私の問題は、異なるエンジンを使用しているテーブルのためです。使用されるテーブルチャートMyISAMとChartdataはInnoDBを使用しました。

0

idChartdataの列がAuto_Incrementに設定されているため、INSERTクエリのNULLを削除してもう一度お試しください。

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

これはうまくいかず、nullはphpmyadminによって追加されました。 mysqlによれば、NULLを使用して "NULLに明示的にNULLを割り当てて列に0を設定してシーケンス番号を生成" –

0

chart_id = 3で、chartdataに行を追加しようとしています。idChart = 3のグラフはありますか?最初にid = 3のグラフを追加してから、クエリを実行します。

[編集] Nvm、あなたはすでにそれを解決しました。 :D

関連する問題