duplicate key怎么处理

上周我遇到了重复密钥的问题。
很烦人。

手动执行。
当数据很少的时候。
你可以亲自看看。
删除它即可。

大量数据。
写一个脚本。
Python 或 SQL 都可以。
自动查找重复项。
处理得当。
删掉一个就行了
数据库级别。
添加限制。
主键约束。
保证独特性。
无法输入。

非主键。
添加唯一索引。
好的。

合并数据。
那也没关系。
使用 SQL 聚合函数。
总和什么的。
添加重复项。

或者。
选择一个策略。
例如,选择最新版本。
或者说最早的。
这取决于交易如何决定。

记录下来。
什么时候编辑的?怎么处理呢。
易于检查。

添加监视器。
如果有重复的,请报警。
由申请人处理。

或者。
改变业务逻辑。
当数据到达时。
看看吧。
不要让重复项进入。

使用 UUID 或类似的东西。
创建唯一标识符。
此外,还避免了重复工作。

无论如何。
如何处理取决于具体情况。
需要手动收集的数据更少。
主要是脚本。
数据库限制。
合并数据也是可能的。
记录和监控也不容忽视。
最后,改变业务逻辑以减少发生。

MySQL 添加数据时出现主键重复怎么办?

等等,我昨天在调试这段代码时遇到了一些奇怪的事情。

我正在向旧系统添加数据。
表结构早就决定好了,主键自动递增。
但新同事在插入时坚持要指定ID,并且还写了一个循环进行批量插入,导致多次挂掉。
检查日志后,我发现使用的ID都是连续的数字,例如例如。
1 2 3 、1 2 4 和1 2 5 只需使用数据库中最后一个自增值,稍后添加即可。

当MySQL报告错误时,它显示“Duplicate entry '1 2 4 ' for key 'PRIMARY'”。
这显然是因为我忘记将表中的主键设置为AUTO_INCRMENT。
当时我想:如果这是一个同时进行的过程怎么办?如果一个人输入1 2 3 ,而另一个人也恰好使用1 2 3 ,那不是冲突吗?
后来我们改变了策略,直接使用UUID作为新数据的主键或者干脆让数据库自己生成。
例如,使用以下 SQL:“INSERT INTOorders (order_id, customer) VALUES (UUID(), ‘CustomerA’)”。
这样即使同时插入,ID也不会重复。

但是旧系统的数据量已经很大了,主键都是手工写的。
现在如果我想更改结构,是否必须先扫描整个表以查看哪些 ID 重复?

“保存科目余额表到数据时出错!请检查数据是否符合要求!SQLSTATE=23000”

我对此很熟悉。
一年前,我帮助北京的一家小公司开发其财务系统。
我经历过这可怕的事情。
账户余额表存储在数据库中,直接报错说账号重复。
这实在令人失望;你必须一一检查。

我当时做的是,首先拿出他们给你的《鼎西诺手动账户提现设置文件》。
这非常重要。
然后使用他们的数据提取工具单击“添加到 Excel”;否则,该功能将无法工作。
然后在“数据检查”中,我单击两个“重复行检查”和“检查帐号唯一性”。

系统立即弹出:“账户余额表中的关键字重复!”,表中重复的账号就会被高亮显示。
这一步非常重要。
然后我使用Excel的条件格式来使用“突出显示单元格规则”中的“重复值”来一次清除所有重复项。

最后一步是一一查看这些重复出现的数字。
有些是真正的错误,而另一些则可能是设置过程中的故障。
它们被一一更改,以确保表中的每个主题编号都是唯一的。
进行更改后,尝试再次保存。
在数据库中不会报告任何错误。
数据保存成功,系统可以正常使用。

总之,这关键取决于几个步骤:一是使用正确的工具;然后检查是否匹配,最后更改号码。
花更多时间检查和纠正比浪费信息要好。