Error Code: 1452 Cannot add or update a child row: a foreign key constraint fails

 

錯誤:
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

相關文章
相關標籤/搜索