编辑:
我的问题是因为表使用了不同的引擎 . 表格图表使用了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( idChartdata
, Chart_id
),KEY fk_Chartdata_Chart
( Chart_id
))ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 10;
ALTER TABLE Chartdata
ADD CONSTRAINT fk_Chartdata_Chart
FOREIGN KEY( Chart_id
)REFERENCES Chart
( idChart
)ON DELETE CASCADE ON UPDATE CASCADE;
3 回答
删除
INSERT
查询中的NULL
,因为idChartdata
列设置为Auto_Increment
,然后重试 .我的问题是因为表使用了不同的引擎 . 表格图表使用了MyISAM和Chartdata使用的InnoDB .
您正在尝试向chartdata添加一行,Chart_id = 3.是否存在idChart = 3的图表?首先尝试添加id = 3的图表,然后执行查询 .
[编辑] Nvm,你已经解决了 . :d