Я испытываю странную проблему, когда на моем локальном компьютере мой код работает отлично без каких-либо ошибок, но на моем работающем сервере (производственном) я получаю эти ошибки при автоматическом запуске заданий (который идет к CLI вместо через PHP, я полагаю):
SQLSTATE [23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись
... кажется, что это происходит только тогда, когда функция, вызывающая SQL inserts запускается командой "php artisan" (или когда эта команда запускается автоматически сервером / jobs / cronjobs). Вставки выполняются следующим образом:
$carValues = [
'name' => $carName,
'car_id' => $carID,
'count' => $count
];
if ($car){
//Record already exists - update it
$car->fill($carValues);
$car->save(); //save changes
} else {
//Record does not exist - add new record
$car = Car::create($carValues);
}
В вышеприведенном примере «имя» имеет уникальный ключ и вызывает ошибки. В основном, если $ car уже не был нулевым перед указанным выше сегментом кода, мы бы сделали обновление, иначе это создаст запись. Это работает все 100% времени на моей локальной машине. Кажется, что каким-то образом только на работающем сервере (при использовании команды php artisan или при запуске команды через CLI / запланированные задания) он работает с этими дублирующимися записями, но не указывает на какой-либо конкретный сегмент кода c ошибки передаются как PDOException от ... / vendor / laravel / framework / src / Illuminate / Database / Connection. php
Действительно запутался в этом. Возможно, есть какой-то способ, чтобы PDOException игнорировал их, поскольку он мешал моим запланированным заданиям работать последовательно, в идеале он должен продолжаться без появления этих ошибок. Опять же - он работает на моем локальном компьютере (на котором работает Homestead / Vagrant box), что соответствует настройке моих онлайн-серверов.