错误:
Error Code: 1452
Cannot add or update a child row: a foreign key constraint failsmysql
错误产生情景:我向一张带外键的表中插入一条新的数据sql
表状况:
表tb_user:code
CREATE TABLE `tb_user` ( `uname` VARCHAR(30) NOT NULL COMMENT '用户名', `upwd` VARCHAR(30) NOT NULL DEFAULT '000000' COMMENT '密码', `email` VARCHAR(30) NOT NULL COMMENT '邮箱', `phone` CHAR(11) NOT NULL COMMENT '电话(手机号)', `role` INT(1) NOT NULL DEFAULT '0' COMMENT '角色(1表示管理员)', PRIMARY KEY (`phone`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='用户信息表'
表tb_address:(关联表 tb_user)io
CREATE TABLE `tb_address` ( `rid` INT(11) NOT NULL AUTO_INCREMENT COMMENT '记录编号', `user_id` CHAR(11) NOT NULL COMMENT '用户编号(用户手机号)', `address` VARCHAR(50) NOT NULL COMMENT '地址', `added` DATETIME NOT NULL COMMENT '添加日期/时间', `receiver` VARCHAR(30) NOT NULL COMMENT '收件人(姓名)', `receiver_phone` CHAR(11) NOT NULL COMMENT '收件人电话', PRIMARY KEY (`rid`), KEY `fk_address_user` (`user_id`), CONSTRAINT `fk_address_user` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`phone`) ) ENGINE=INNODB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COMMENT='用户地址表'
错误产生:我执行如下语句时报错。class
INSERT INTO tb_address (user_id,address,added,receiver,receiver_phone) VALUES('10086','彩云之南',CURRENT_TIMESTAMP,'范闲','4008208820')
分析:向tb_address 中插入了一条新数据,此数据中外键所在字段在表tb_user中并无。注意:user_id与表tb_user的字段phone关联。email
解决:先向 tb_user 表中插入数据此数据的 phone 字段与以后要向 tb_address 表中插入的数据的 user_id 字段一致date