繁体   English   中英

多次插入/更新的唯一关键异常

[英]unique key exception on multiple inserts/updates

我有一个应用程序,该应用程序从外部来源(销售点单位的发票)接收多个请求。 它每秒收到数十个请求,并且其中一些请求是相同的(具有相同的请求主体)。

请求数据被转换并保存到两个关联的表(外键)中。 如果记录已经存在(通过唯一的组合键查询),则记录将更新,否则将添加记录。

问题是,有时如果同一时间收到两个具有相同主体的请求,则应用程序会抛出异常,表明唯一键已经存在,并且无法将其插入:

 SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry

这可能是MySQL中的某种竞争条件,但无法弄清楚

整个过程包装在Laravel交易中。 我尝试设置不同的隔离级别。 SERIALIZABLE解决了该问题,但是随后我遇到了很多死锁异常,并且我看到有时记录根本没有保存。

这很简单,在这里发生的情况是,您有一些值声明为“ UNIQUE”或“ Primary Key”或类似的名称,并且您尝试再次插入,某些键限制它阻止了插入,这应该很好,请避免数据库中有重复的条目,但是您需要做的是检查您尝试插入的数据是否存在于数据库中,而不是存在于所有列之前,您应该索要您的键或键组合,但我无济于事如果我不知道数据或表格...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM