MySQL上的自动增量问题

时间:2014-05-05 20:58:14

标签: mysql primary-key auto-increment

我有一个表(此示例中为table_name),其中包含一个名为id_table_name的列,AUTO_INCREMENT

突然之间,我的应用程序尝试在那里添加一行,就像它一直在做的那样,并且它不起作用:

mysql> INSERT INTO table_name(timestamp,referrer_ip) VALUES (1399299504.5109,'189.18.200.74');
ERROR 1062 (23000): Duplicate entry '**153849251**' for key 'PRIMARY'

然后,我在主键上搜索了这个值,但没找到它:

mysql> select * from table_name where id_table_name = **153849251**;
Empty set (0.00 sec)

此表的最后一行确实具有ID 153849250,但由于某种原因,该表不接受具有下一个ID的任何新行。因此,要解决此错误,我必须添加另一行“强制”ID 153849252 (仅+1)。然后,在那之后,我尝试执行的相同插入语句就像魅力一样:

mysql> INSERT INTO table_name(id_table_name,timestamp,referrer_ip) VALUES (153849252,1399299504.5109,'189.18.200.74');
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO table_name(timestamp,referrer_ip) VALUES (1399299504.5109,'189.18.200.74');
Query OK, 1 row affected (0.01 sec)

看到“id_table_name”是我在这张桌子上唯一的主键:

mysql> desc table_name \G
************************** 1. row ***************************
  Field: id_table_name
   Type: int(11)
   Null: NO
    Key: PRI
Default: NULL
  Extra: auto_increment
*************************** 2. row ***************************
  Field: timestamp
   Type: double(16,4)
   Null: NO
    Key: MUL
Default: NULL
  Extra:<br>
*************************** 3. row ***************************
  Field: referrer_ip
   Type: varchar(40)
   Null: NO
    Key:
Default: NULL
  Extra:
3 rows in set (0.00 sec)

为什么MySQL没有“接受”该ID,即使它不存在于桌面上?有没有人见过这个?

提前致谢。

1 个答案:

答案 0 :(得分:0)

步骤1:从your_table_name中选择max(your primary_key_field);
第2步:ALTER TABLE your_table_name AUTO_INCREMENT = value_u_got_from_step1 + 1;
你可以在步骤2中放置任何值而不是1 ...我认为这可能有用......