我将主键设成了auto_increment,当我insert的时候有些时候生成的结果会是这样的:
1
3
4
主键值跳过了2,当我把记录全部删除在将auto_increment重新记数之后,再插入,结果又正确了:
1
2
3
4
这是什么原因?
1
sivacohan 2015-07-30 09:26:32 +08:00 via Android
有事务失败了。
|
3
sivacohan 2015-07-30 09:31:38 +08:00 via Android
你具体情况我不太清楚。检查一下MySQL都有哪些连接。看一下日志吧。
如果你只有insert,这个基本就是有事务失败。 |
4
haozhang OP 我的autocommit设置为1,应该事务是自动的吧?
|
6
pH 2015-07-30 09:46:57 +08:00
说实话我还是第一次看到这样的情况。 一般出现间断的情况都是因为我手动删除了。
|
7
thinkmore 2015-07-30 09:57:38 +08:00
我开始看到也是怀疑手动删除了,你看下是不是有其他人操作你的数据库,或者看看日志,不要在意这些细节
|
10
thinkmore 2015-07-30 10:13:37 +08:00
没有复现了吧?这个确实是不太好解决,建议不要浪费时间在这上面了
|
11
ncwhale 2015-07-30 10:25:14 +08:00
建议检查一下MySQL设置喵……如果是新项目,及早换数据库喵……PG或者Mongo都好喵……
|
12
mkeith 2015-07-30 10:53:22 +08:00
插入失败还是会自增的吧
|
13
millson 2015-07-30 11:12:10 +08:00
保存所有的sql,然后再查
|
14
gkiwi 2015-07-30 11:38:48 +08:00
事务会预先读个id先占着,用不用到再说,保证并发时候主键id不冲突。
比如事务1 先占了10,事务2接着占了11,结果事务1执行失败,10这个id就被弃了。 |
16
est 2015-07-30 12:53:54 +08:00
处女座玩 auto_increment 是一种怎么样的体验。。。
|
22
haozhang OP @thinkmore 关键是有复现啊,我觉得可能是我开了sequel pro?这货会一直占着一条连接?
不想了,随它去吧。 |
23
lianyue 2015-07-30 17:19:53 +08:00
无论插入成功没 id 都会自增1
|