zoukankan      html  css  js  c++  java
  • 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 fails

    错误产生情景:我向一张带外键的表中插入一条新的数据

    表情况:
    表tb_user:

    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)

    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='用户地址表'
    

    错误产生:我执行以下语句时报错。

    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关联。

    解决:先向 tb_user 表中插入数据此数据的 phone 字段与之后要向 tb_address 表中插入的数据的 user_id 字段一致

  • 相关阅读:
    STL——increment/decrement/dereference操作符
    STL——静态常量整数成员在class内部直接初始化
    STL——临时对象的产生与运用
    C++中模板类使用友元模板函数
    模板编程中的技巧
    plsql 表数据中文显示乱码(配置环境变量)
    plsql 常用快捷键(自动替换)
    javascript 跳出(终止)forEach循环
    plsql 快捷键配置
    plsql oracle client没有正确安装(plsql连接远程数据库)
  • 原文地址:https://www.cnblogs.com/code-xu/p/14407965.html
Copyright © 2011-2022 走看看