使用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]
);
答案 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