php向mysql执行insert时,提示“mysql duplicate key”,如何处理?
前提:【laravel4】服务器端提供接口全部采用异步方式调用,数据表有唯一键
场景:在并发请求处理中,mysql数据库会出现“ Integrity constraint violation: 1062 Duplicate entry ”,如两个用户同时请求注册email
$ret = User::create(array(
'email' => "nick@nick.com"
));
我想让这两个并发请求都成功返回,并返回Email,如何规避掉键值重复。
目前有以下几种:
1)插入前,使用select查询,但这个并不能解决问题。
2)使用insert ignore
3)使用insert on duplicate key
4)直接try catch
哪种处理方案会好些?
- php或者mysql 有没有类似计算Σ求和公式的方法?
- 非科班的PHPer转C++开发可行吗,能找到工作吗?
- Laravel的package.json文件中"devDependencies"与"dependencies"的区别是什么?
- php如何生成唯一递增数字?
- 计划任务定时执行
- 递归和循环最本质的区别是什么
- 电商平台支付问题
- mysql在两个索引下两个事务使用同一个语句更新时出现死锁,该怎么解决?
- java中连接mysql时添加Class.forName("com.mysql.jdbc.Driver")的作用?
- 七牛 音频实时播放
- memcache 加锁作用?
- install.php到底删不删?
- thinkphp5本地数据库表和外接数据库表一对多问题,求大神来解决
那就要看你的需求了,出现Duplicate entry这个错误是因为主键有重复,如果是以uid为主键的话,那么要考虑uid生成算法是否有问题,或者是否重复注册了