@jazzus

Почему возникает ошибка Duplicate entry for key user_id_unique?

Laravel 5.8, php 7.3, Mysql, Ubuntu
Ошибка
Integrity constraint violation: 1062 Duplicate entry for key 'user_locations_user_id_unique' (SQL: insert into `user_locations` поля).
Ошибка только на продакшене. Тесты не воспроизводят. Возникает иногда у некоторых пользователей по непонятным причинам. Эти пользователи ничем не отличаются от других. Смотрел запись метрики – пользователь добавляет данные без каких-либо проблем. Делает только ошибки Form Request валидатора (не заполняет обязательное поле), затем заполняет - запись сохраняется и в логах ошибка. Думал, что исправил через $request->except('id', 'user_id') Но в логах опять появилось (20 записей от одного пользователя, хотя щелкал сохранить 2 раза). Код
public function store(ContactRequest $request)
 {
       $user = Auth::user();
       $country = Country::find($request->input('country_id'));

       if (!$id = $request->input('id')) {
           $location = new UserLocation;
           $request['user_id'] = $user->id;
           $location=$location->create($request->all());
       }else{
           $location = UserLocation::findOrFail($id);
       }

       if (!$country->isOtherCountry()) {
            $request['other_country'] = null;
            $request['other_code'] = null;
       }

       if ($location->update($request->except('id', 'user_id'))) {
           return response()->json(['success_msg'=>'Адрес сохранен']);
       }
 }

Это может быть связано с продакшн сервером? Что проверить?
Update
Переписал создание через отношение пользователя
$user->location()->create($request->all());
  • Вопрос задан
  • 913 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы