mysql中主键可以重复吗 主键唯一性约束解析

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

这已于上周得到证实。
2 02 3 年3 月1 5 日考试环境中。

主键重复。
镇静日志。
问题是代码。

我的朋友正在用他的ID来增加。
他只是说用MySQL自动增加。

代码很难。
重复执行尝试使用UUID。
已解决。

或者重复的更新密钥也可以。
保持简单。
他选择了这个。

被遗忘。

解决MySQL主键重复错误:INT类型溢出与BIGINT升级方案

上周有客户问我,为什么他的MySQL数据库经常出现重复主键错误?我向他解释说,这种情况通常是因为INT类型的主键达到了最大值2 1 4 7 4 8 3 6 4 7 ,然后他问我该怎么办。

首先我让他了解错误的原因。
此错误通常发生在主键设置为 AUTO_INCRMENT 的表中。
当插入的行数超过INT类型的上限时,就会报错。
例如,如果他在一个超过2 1 亿条记录的表上使用INT类型的主键,就会出现问题。

然后我建议他将主键从INT升级为BIGINT。
BIGINT类型的主键可以存储的最大值是9 2 2 3 3 7 2 03 6 8 5 4 7 7 5 8 07 ,这样就不会溢出。
我告诉他,根据我的经验,这是一个非常有效的解决方案。

然后我告诉他具体该怎么做。
首先,他必须执行 ALTER TABLE 命令来更改主键的数据类型。
然后他需要验证更改结果,看看表结构是否正确。

但是,在执行此操作之前,有一些重要事项需要注意。
例如,他需要先备份整个数据库,以防出现意外情况。
另外,请先在测试环境中进行测试,以确保应用程序的功能不受影响。
另外,如果其他表的外键与该表的主键相关,则这些外键列的数据类型也必须同时升级。

最后我告诉他,这个错误其实是INT型主键溢出的典型表现,这是高并发或者大数据量系统的通病。
通过将主键升级为BIGINT,可以彻底解决这个问题,并且可以保证数据库的长期可扩展性。
反正你也能算出来,这个计划应该还是蛮靠谱的。
我还是觉得也许以后设计数据库的时候,一开始就应该考虑到这个问题。