首页 文章

Mysql错误#1452 - 无法添加或更新子行

提问于
浏览
1

编辑:

我的问题是因为表使用了不同的引擎 . 表格图表使用了MyISAM和Chartdata使用的InnoDB .


我有一个非常简单的数据库模型,但由于某种原因,我不能让外键工作 . 我用Mysql Workbench创建了数据库,我在'Chart'表中有两行,ID为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 Chart ( idChart ) ON DELETE CASCADE ON UPDATE CASCADE)

我确信外键存在,并且我试图重新创建表格(稍作修改) .

链接到数据库模型:http://i.stack.imgur.com/qKZlh.png

This is a SQL dump from 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)NOT NULL,PRIMARY KEY( 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 )REFERENCES ChartidChart )ON DELETE CASCADE ON UPDATE CASCADE;

3 回答

  • 2

    删除 INSERT 查询中的 NULL ,因为 idChartdata 列设置为 Auto_Increment ,然后重试 .

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

    我的问题是因为表使用了不同的引擎 . 表格图表使用了MyISAM和Chartdata使用的InnoDB .

  • 0

    您正在尝试向chartdata添加一行,Chart_id = 3.是否存在idChart = 3的图表?首先尝试添加id = 3的图表,然后执行查询 .

    [编辑] Nvm,你已经解决了 . :d

相关问题