Laravel-updateOrCreate()-违反完整性约束

时间:2019-06-10 11:38:47

标签: laravel

使用updateOrCreate()时,出现以下错误:

Integrity constraint violation: 1062 Duplicate entry '8acda4a86b26d8dc016b3801b87236b0' for key 'uuid'

我的理解是,当表中已经存在唯一键时,它不会尝试插入,而是会更新该行,为什么我会收到此错误?

uuid列在我的MySQL数据库中设置为唯一。

列json是一个JSON列,并设置为NOT NULL。

这是我的代码:

TransactionJSON::updateOrCreate(
   ['uuid' => $json->payload->id],
   ['json' => $json_merge]
);

1 个答案:

答案 0 :(得分:0)

在模型uuid中,应将protected $primaryKey = 'uuid'; 设置为主键。

uuid

这就是laravel将通过id更新表的方式,否则laravel将在id不存在的情况下通过getJdbcTemplate().update("INSERT INTO abc(abc_id, abc_uuid, " + "VALUES (?, ?)", abcId, uuidToBytes(abcUuid)) (默认primaryKey)查找条目,它将创建一个。了解更多https://laravel.com/docs/5.8/eloquent