编辑:
我的问题是因为表格使用了不同的引擎。表格图表使用了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 (
{图表{1}} {Chartdata {1}} {fk_Chartdata_Chart {1}} {Chart_id {1}} {图表{1}} {idChart {1}}
我确信外键存在,并且我尝试重新创建表格(稍作更改)。
链接到数据库模型:http://i.stack.imgur.com/qKZlh.png
这是来自PhpMyAdmin的SQL转储:
.
, CONSTRAINT
int(11)NOT NULL AUTO_INCREMENT,
FOREIGN KEY (
varchar(500)DEFAULT NULL,
) REFERENCES
varchar(500)DEFAULT NULL,
(
int(11)NOT NULL,
PRIMARY KEY() ON DELETE CASCADE ON UPDATE CASCADE)
,CREATE TABLE IF NOT EXISTS `Chartdata` (
),
KEY idChartdata
(param1
)
)ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 10;
ALTER TABLE param2
添加约束Chart_id
FOREIGN KEY(idChartdata
)引用Chart_id
(fk_Chartdata_Chart
)ON DELETE CASCADE ON UPDATE CASCADE;
答案 0 :(得分:2)
我的问题是因为表使用了不同的引擎。表格图表使用了MyISAM和Chartdata使用的InnoDB。
答案 1 :(得分:0)
移除NULL
查询中的INSERT
,因为idChartdata
列已设置为Auto_Increment
,然后重试。
INSERT INTO `charts`.`Chartdata`(`param1` ,`param2` ,`Chart_id`)
VALUES ('2012-01-10 05:00:00', '58', '3')
答案 2 :(得分:0)
您正在尝试向chartdata添加一行,Chart_id = 3.是否存在idChart = 3的图表?首先尝试添加id = 3的图表,然后执行查询。
[编辑] Nvm,你已经解决了。 :d