我有两个表(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
我的alter table 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`))
答案 0 :(得分:0)
正如评论者所说,cliente
中有一行或多行的id_usario
值不会出现在usario.id
的任何位置。在创建外键约束之前,您必须解决此问题。
在创建fk之前,您可以在cliente
中找到违规记录。
SELECT cliente.*
FROM cliente
LEFT JOIN usario on cliente.usario_id = usario.id
WHERE usario.id = NULL
一旦您知道哪些记录不好,您就可以更新或删除它们。