Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql错误#1452-无法添加或更新子行_Mysql_Foreign Keys_Mysql Workbench - Fatal编程技术网

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

Mysql错误#1452-无法添加或更新子行,mysql,foreign-keys,mysql-workbench,Mysql,Foreign Keys,Mysql Workbench,编辑: 我的问题是因为表格使用了不同的引擎。图表使用MyISAM,图表数据使用InnoDB 我有一个非常简单的数据库模型,但由于某些原因,我不能得到外键的工作。我已经用Mysql Workbench创建了DB,我在'Chart'表中有两行id为3和4。尝试在chartdata中添加行时,出现以下错误: INSERT INTO `charts`.`Chartdata` ( `idChartdata` , `param1` , `param2` , `Chart_id` ) VALUES (

编辑:


我的问题是因为表格使用了不同的引擎。图表使用MyISAM,图表数据使用InnoDB


我有一个非常简单的数据库模型,但由于某些原因,我不能得到外键的工作。我已经用Mysql Workbench创建了DB,我在'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-无法添加或更新子行:外键约束失败(
charts
Chartdata
,约束
fk\u Chartdata\u Chart
外键(
Chart\u id
)引用
Chart
idChart
)在更新级联时删除级联)

我确信外键存在,并且我多次尝试重新创建表(只做了一些小的更改)

链接到数据库模型:

这是来自PhpMyAdmin的SQL转储:

CREATE TABLE IF NOT EXISTS `Chartdata` (
idChartdata
int(11)非空自动增量,
param1
varchar(500)默认为空,
param2
varchar(500)默认为空,
Chart\u id
int(11)不为空, 主键(
idChartdata
Chart\u id
), 键
fk\u图表数据\u图表
Chart\u id
) )ENGINE=InnoDB默认字符集=latin1自动增量=10

更改表格
Chartdata

在更新层叠中的删除层叠中添加约束
fk_图表数据_图表
外键(
Chart_id
)引用
Chart
idChart

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

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

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


[编辑]Nvm,你已经解决了它:我的问题是因为表格使用了不同的引擎。图表使用MyISAM,图表数据使用InnoDB

您能在问题中包含失败的SQL INSERT语句吗?我已将其添加到问题中。我的问题是因为表使用了不同的引擎。Table Chart使用MyISAM,Chartdata使用InnoDB。这不起作用,空值由phpmyadmin添加。根据mysql,您可以使用NULL“显式地将NULL或0分配给列以生成序列号”,解决方案是什么?我假设我更改了一个表引擎,以便它们匹配。很多年前我还不知道,但那是我的猜测。