>백엔드 개발 >PHP 튜토리얼 >laravel - php向mysql执行insert时,提示“mysql duplicate key”,如何处理?

laravel - php向mysql执行insert时,提示“mysql duplicate key”,如何处理?

WBOY
WBOY원래의
2016-06-06 20:41:501558검색

前提:【laravel4】服务器端提供接口全部采用异步方式调用,数据表有唯一键
场景:在并发请求处理中,mysql数据库会出现“ Integrity constraint violation: 1062 Duplicate entry ”,如两个用户同时请求注册email

<code>$ret = User::create(array(
    'email' => "nick@nick.com"
));
</code>

我想让这两个并发请求都成功返回,并返回Email,如何规避掉键值重复。
目前有以下几种:
1)插入前,使用select查询,但这个并不能解决问题。
2)使用insert ignore
3)使用insert on duplicate key
4)直接try catch
哪种处理方案会好些?

回复内容:

前提:【laravel4】服务器端提供接口全部采用异步方式调用,数据表有唯一键
场景:在并发请求处理中,mysql数据库会出现“ Integrity constraint violation: 1062 Duplicate entry ”,如两个用户同时请求注册email

<code>$ret = User::create(array(
    'email' => "nick@nick.com"
));
</code>

我想让这两个并发请求都成功返回,并返回Email,如何规避掉键值重复。
目前有以下几种:
1)插入前,使用select查询,但这个并不能解决问题。
2)使用insert ignore
3)使用insert on duplicate key
4)直接try catch
哪种处理方案会好些?

那就要看你的需求了,出现Duplicate entry这个错误是因为主键有重复,如果是以uid为主键的话,那么要考虑uid生成算法是否有问题,或者是否重复注册了

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.