Ошибка SQL: 1452: невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено - PullRequest
3 голосов
/ 10 марта 2011

В моей базе данных две таблицы:

  1. order;
  2. course.

order имеет столбец courseid, который ссылается на столбец id таблицы course.Всякий раз, когда я пытался сделать saveAll() в CakePHP, вышеупомянутая ошибка SQL будет отображаться, и данные не будут сохранены.

Ответы [ 2 ]

16 голосов
/ 10 марта 2011

Звучит так, что между вашими таблицами есть ограничение внешнего ключа в базе данных. Это означает, что в столбец course_id нельзя вставить значения, отличные от идентификаторов из внешней таблицы.

Вышеприведенная ошибка означает, что при публикации ваших данных внешнее поле будет пустым или отсутствует.

Что искать: 1. Убедитесь, что в вашей базе данных внешнее поле в дочерней таблице может принимать значение NULL. Если у вас есть раскрывающийся список со значениями и опция по умолчанию пуста, если поле не принимает значение NULL, эта ошибка может возникнуть 2. Проверьте свои данные в контроллере, если передаете переменную в следующем примере: $ this-> data ['Order'] ['course_id'], если она пуста или отсутствует, см. Пункт 1.

0 голосов
/ 17 марта 2014

Я собираюсь ответить просто ради кого-то еще с похожей проблемой, ищущей ответ. Работая с ORM в других средах, я сделал ошибку, пытаясь назначить роли или другие данные, прежде чем сохранить то, к чему я добавлял роль. Пример:

Создание нового пользователя-

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

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

Пользователь создан, однако, пытаясь добавить роль перед сохранением пользователя, вы в конечном итоге получаете пользователя без роли, и эта точная ошибка вылетает на вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...