繁体   English   中英

#1452 MySQL错误:alter table添加外键

[英]#1452 MySQL Error: alter table add foreign key

我有两个表(cliente,usuario),当我尝试为cliente添加外键时,引用表usuario的原因是错误1452

Table Cliente

id          int             primary key     auto_increment
nome        varchar(50)     not null
telefone    varchar(14)
email       varchar(30)
id_usuario  int             not null

-------------------------------------------------------------------------
Table Usuario

id      int             primary key     auto_increment
nome    varchar(50)     not null
email   varchar(30)     not null

我的变更表SQL

ALTER TABLE cliente
ADD FOREIGN KEY (id_usuario) REFERENCES usuario(id);

问题在哪里导致此错误?

错误:

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`pedidosystem`.`#sql-25ac_5f`, CONSTRAINT `#sql-25ac_5f_ibfk_1` FOREIGN KEY (`id_usuario`) REFERENCES `usuario` (`id`))

正如评论者所说,您在cliente有一个或多个具有id_usario值的行,这些行不会出现在usario.id任何地方。 在创建外键约束之前,您必须先解决此问题。

在创建fk之前,您可以像这样在cliente找到有问题的记录。

SELECT cliente.*
  FROM cliente
  LEFT JOIN usario on cliente.usario_id = usario.id
 WHERE usario.id = NULL

一旦知道哪些记录不好,就可以对其进行更新或删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM