SQLSTATE : Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не удалось – Laravel

Я знаю, что этот вопрос уже задан, но я все еще не могу найти то, что я делаю неправильно.

Я использую фреймворк Laravel.

У меня есть 2 таблицы (пользователи и местоположения). Когда я хочу создать пользователя, я получаю сообщение об ошибке:

SQLSTATE [23000]: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: сбой ограничения внешнего ключа ( festival_aid . Users, CONSTRAINT fk_users_locations1 ИНОСТРАННЫЙ КЛЮЧ ( location_id ) ЛИТЕРАТУРА locations ( location_id ) ВКЛ УДАЛИТЬ КАСКАД В ОБНОВИВЕНИИ НЕТ ДЕЙСТВИЙ) (SQL : вставить в users ( user_id , user_email , location_id ) значения (?,?,?)) (Привязки: array (0 => '1', 1 => 'test@hotmail.com', 2 => '1', ))

Пользователи таблицы

 CREATE TABLE IF NOT EXISTS `festival_aid`.`users` ( `user_id` BIGINT NOT NULL AUTO_INCREMENT, `user_email` VARCHAR(45) NOT NULL, `user_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `user_modified` TIMESTAMP NULL, `user_deleted` TIMESTAMP NULL, `user_lastlogin` TIMESTAMP NULL, `user_locked` TIMESTAMP NULL, `location_id` BIGINT NOT NULL, PRIMARY KEY (`user_id`), UNIQUE INDEX `user_email_UNIQUE` (`user_email` ASC), CONSTRAINT `fk_users_locations1` FOREIGN KEY (`location_id`) REFERENCES `festival_aid`.`locations` (`location_id`) ON DELETE CASCADE ON UPDATE NO ACTION, ENGINE = InnoDB; 

Расположение таблиц

 DROP TABLE IF EXISTS `festival_aid`.`locations` ; CREATE TABLE IF NOT EXISTS `festival_aid`.`locations` ( `location_id` BIGINT NOT NULL AUTO_INCREMENT, `location_latitude` FLOAT NOT NULL, `location_longitude` FLOAT NOT NULL, `location_desc` VARCHAR(255) NULL, `location_type` VARCHAR(45) NULL, PRIMARY KEY (`location_id`)) ENGINE = InnoDB; 

Пользователь миграции

 public function up() { Schema::table('users', function(Blueprint $table) { $table->increments('user_id'); $table->string('user_email'); $table->timestamp('user_created'); $table->timestamp('user_modified'); $table->timestamp('user_deleted'); $table->timestamp('user_lastlogin'); $table->timestamp('user_locked'); $table->foreign('location_id') ->references('id')->on('locations'); //->onDelete('cascade'); }); } 

Место миграции

 public function up() { Schema::table('locations', function(Blueprint $table) { $table->primary('location_id'); $table->float('location_latitude'); $table->float('location_longitude'); $table->string('location_desc'); $table->string('location_type'); }); } 

Пользователь модели

 public function location() { return $this->belongsTo('Location'); } 

Расположение модели

  public function user() { return $this->hasOne('User'); } 

контроллер

 public function store() { $input = Input::all(); $rules = array('user_email' => 'required|unique:users|email'); $v = Validator::make($input, $rules); if($v->passes()) { $user = new User(); $location = new Location(); $user->user_email = $input['user_email']; //$user->location_id = $input['location_id']; $location->location_latitude = $input['location_latitude']; $location->location_longitude = $input['location_longitude']; $user->save(); $location->save(); } 

Я не могу найти, что я делаю неправильно. Очевидно, что с внешним ключом что-то не так.

Related of "SQLSTATE : Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не удалось – Laravel"

Строка пользователя требует ссылки на допустимое местоположение. Это местоположение должно быть доступно до того, как пользователь будет сохранен. Итак, сначала сохраните местоположение, а затем сохраните пользователя и раскомментируйте строку $user->location_id и все готово.

Те разработчики, которые сталкиваются с этой ошибкой:

SQLSTATE [23000]: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку:
Ограничение внешнего ключа завершается неудачно ( laravel . articles , CONSTRAINT articles_user_id_foreign FOREIGN KEY ( user_id ) ССЫЛКИ users ( id ) ON DELETE CASCADE)
(SQL: insert into articles ( title , user_id , body , updated_at , created_at ) значения (rao, 1, sflkkjk, 2016-03-01 20:45:32, 2016-03-01 20:45:32))
SQLSTATE [23000]: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку:
Ограничение внешнего ключа завершается неудачно ( laravel . articles , CONSTRAINT articles_user_id_foreign FOREIGN KEY ( user_id ) ССЫЛКИ users ( id ) ON DELETE CASCADE)
(SQL: insert into articles ( title , user_id , body , updated_at , created_at ) значения (rao, 1, sflkkjk, 2016-03-01 20:45:32, 2016-03-01 20:45:32))

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

КЛЮЧЕВОЙ МОМЕНТ

Две таблицы: одна статья, а другая – пользователь. У пользователя много статей, но ни одна статья не имеет много пользователей. Таким образом, внешний ключ смещается в сторону таблицы статей. Если таблица пользователя не имеет записи, вы сталкиваетесь с той же ошибкой, что и раньше.

Делая это, мы можем легко решить эту проблему.