SQL错误:1452:无法添加或更新子行:外键约束失败

时间:2011-03-10 07:31:14

标签: sql cakephp

我的数据库中有两个表:

  1. order;
  2. course
  3. order有一列courseid,它引用id表的列course。每当我在saveAll()中尝试CakePHP时,都会显示上述SQL错误,并且不会保存数据。

2 个答案:

答案 0 :(得分:16)

听起来你的表之间在数据库中有外键约束。这意味着在列course_id中,您不能插入与外表中的ID不同的值。

上述错误意味着当您发布数据时,外地字段为空或缺失。

寻找什么: 1.检查数据库中的子表中的外部字段是否可以接受NULL。如果您有值下拉列表,并且如果该字段不接受NULL,则默认选项为空,则可能发生此错误 2.如果您在示例中传递变量,请检查控制器中的数据:$ this-> data ['Order'] ['course_id']如果它为空或缺少,请参阅第1点。

答案 1 :(得分:0)

我只是为了其他任何有类似问题寻找答案的人做出回应。在其他框架中使用ORM时,我错误地尝试在保存我添加角色的内容之前分配角色或其他数据。例如:

创建新用户 -

    $user = ORM::factory('user');
    $user->username = 'SomeoneSpecial";

    if ($user->add(ORM::factory('role', 'login') && $user->save() ) {
        // continue on with code
    }

用户已创建,但在尝试在保存用户之前添加角色时,您最终会找到没有角色的用户,并且确实会向您吐出错误的错误。