SQLState 23000 - 完整性约束违规1062重复条目

时间:2015-10-17 12:36:39

标签: php mysql laravel postman

我正在使用自定义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

当我使用不同的incident_id时,我收到错误:

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))

即使我更改了数据,为什么使用完全相同的条目发送请求?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

那是因为你没有为incident_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用户,所以我无法告诉你为什么它没有使用你传入的incident_id。