![]() |
1
45
吉姆·马丁的评论来自 §3.6.9. "Using AUTO_INCREMENT" MySQL文档:
使用MySQL5.1.45进行快速测试会导致以下错误:
您可以在插入时测试该错误并采取适当的操作。 |
![]() |
2
45
为了安抚神经,考虑一下: 假设您有一个数据库,每当用户在您的网站上执行某种事务时,它都会插入一个新值。 如果使用64位整数作为ID,则这是溢出的条件: 世界人口有60亿,如果地球上的每个人每天和每年(没有休息)每秒执行一次交易,你的身份证就需要80多年才能完成。 也就是说,只有谷歌需要在咖啡休息时偶尔模糊地考虑这个问题。 |
![]() |
3
9
通过查看最大的ID,您将知道它何时会溢出。您应该在任何异常接近被抛出之前对其进行很好的更改。 事实上,您应该从足够大的数据类型开始设计。即使从一开始就使用64位ID,您的数据库性能也不会受到影响。 |
![]() |
4
6
这里的答案说明了发生了什么,但是只有一个答案说明了如何检测问题(然后只有在错误发生之后)。通常,在这些问题成为生产问题之前能够检测到它们是很有帮助的,因此我编写了一个查询来检测何时将发生溢出:
希望这能帮助别人。 |
![]() |
5
0
对于MySQL5.6, 3.6.9 Using AUTO_INCREMENT 在says中:
|
![]() |
6
-1
我想分享一下我刚刚经历过的一次个人经历。使用nagios+检查\u mk+ndoutils。ndoutils将所有检查存储在一个名为nagios_servicechecks的表中。主键是有符号的自动增量int。在这个限制范围内,MySQL会发生什么?在我的例子中,MySQL删除了除最后一个记录以外的所有记录。桌子现在几乎空了。每次插入新记录时,都会删除旧记录。不知道为什么会这样,但事实是我失去了所有的记录。idoutils与icinga(而不是nagios)一起使用,通过bigint修复了这个问题。它没有产生错误。 |
|
user3676604 · 如果自动增量值达到其极限,该怎么办? 7 年前 |
![]() |
user3292788 · Mysql:自动递增的最高值总是最近的吗? 7 年前 |
![]() |
Raptisoft · 在mysql中生成全局自动递增数字的最简单方法 7 年前 |
![]() |
TiggerToo · 具有重复值和多列主键的SQL自动增量id? 8 年前 |
|
Roknikus · 我的SQL语句中的“or”是什么错误? 9 年前 |
![]() |
Shomaail · 从具有自动递增列的表中复制数据 9 年前 |
![]() |
Gyula Madarasz · 编程获取自动递增主键列 10 年前 |
|
user3900958 · 我的变量没有递增 10 年前 |
![]() |
DDAZZA · 如何通过在rails中递增来保存唯一字符串? 11 年前 |