Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 SQL错误1452:无法添加或更新子行_Mysql_Sql_Reference_Key_Alter - Fatal编程技术网

Mysql SQL错误1452:无法添加或更新子行

Mysql SQL错误1452:无法添加或更新子行,mysql,sql,reference,key,alter,Mysql,Sql,Reference,Key,Alter,我正在尝试将外键添加到名为OrdersTbl的现有表中。我添加了一个名为ApprovedBy的新专栏,如下所示: ALTER TABLE OrdersTbl ADD ApprovedBy BIGINT UNSIGNED NOT NULL; 之后,我尝试将其设置为外键: ALTER TABLE OrdersTbl ADD CONSTRAINT ApprovedByEmp FOREIGN KEY (ApprovedBy) REFERENCES EmployeesTbl(EmployeeID);

我正在尝试将外键添加到名为OrdersTbl的现有表中。我添加了一个名为ApprovedBy的新专栏,如下所示:

ALTER TABLE OrdersTbl ADD ApprovedBy BIGINT UNSIGNED NOT NULL;
之后,我尝试将其设置为外键:

ALTER TABLE OrdersTbl
ADD CONSTRAINT ApprovedByEmp FOREIGN KEY (ApprovedBy)
REFERENCES EmployeesTbl(EmployeeID);
但我一直在

错误1452:无法添加或更新子行


我做错了什么?我是否应该将字段
ApprovedBy
设置为外键?

我的错误。似乎我必须手动更改表OrdersTbl中的值。换句话说,在添加ApprovedBy列时,默认情况下为每个条目设置的值当然是“0”。由于没有ID为“0”的员工,因此失败并发送了该错误。 手动将每个条目中的值更改为“1”(或表EmployeesTbl中的任何其他现有ID)后,问题已得到修复。

定义时

 ALTER TABLE OrdersTbl ADD ApprovedBy BIGINT UNSIGNED NOT NULL;

然后,
ApprovedBy
不能为
null
。默认值将设置为
0

然后将外键应用于
EmployeesTbl
。这意味着DB检查
ApprovedBy
是否只包含
员工stbl
中的值。但事实并非如此。值为
0


因此,允许
ApprovedBy
null
,并在以后相应地设置值,或者在添加外键之前设置正确的值。
ApprovedBy
不能为null。当您引用另一个表时,它必须包含表
employeestbl
中的值。您需要在引用或允许空值之前填充值。请阅读这里:,这里:,和这里:谢谢:)这正是我所怀疑的。