Maison >développement back-end >tutoriel php >laravel - php向mysql执行insert时,提示“mysql duplicate key”,如何处理?
前提:【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生成算法是否有问题,或者是否重复注册了