SQLState 23000 — нарушение ограничения целостности 1062 Duplicate Entry

Я использую пользовательский запрос API к моей базе данных для создания новой записи.

Моя структура таблицы выглядит так:

Структура таблицы

    Schema::create('incidents', function (Blueprint $table) {
$table->increments('id');
$table->string('incident_id')->unique();
$table->integer('incident_type')->unsigned();
$table->string('location');
$table->string('street');
$table->string('city');
$table->double('latitude', 10, 6);
$table->double('longitude', 10, 6);
$table->date('date');
$table->time('time');
$table->smallInteger('incident_archived')->default(0);
$table->timestamps();
});

Я установил для Incident_Type значение Unique, поскольку это требование для моей системы. Когда я публикую новую запись в системе:

SERVER_IP/v1/incidents?incident_id=1&city=Muenchen&street=Fichtenstr.20&latitude=100&longitude=300

Первый раз работает отлично.

Второй раз:

SERVER_IP/v1/incidents?incident_id=2&city=Muenchen&street=Fichtenstr.20&latitude=100&longitude=300

когда я использую другой инцидент_ид, я получаю ошибку:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'incidents_incident_id_unique' (SQL: insert into `incidents` (`street`, `city`, `latitude`, `longitude`, `updated_at`, `created_at`) values (Fichtenstr.20, Muenchen, 100, 300, 2015-10-17 12:28:11, 2015-10-17 12:28:11))

Почему при отправке запроса используется та же самая запись, даже если я изменил данные? И как я могу это исправить?

0

Решение

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

insert into `incidents` (`street`, `city`, `latitude`, `longitude`, `updated_at`, `created_at`) values (Fichtenstr.20, Muenchen, 100, 300, 2015-10-17 12:28:11, 2015-10-17 12:28:11))

Не пользователь Laravel, поэтому я не могу сказать вам, почему он не использует инцидент_ид, который вы передаете.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]