【发布时间】:2014-05-05 20:58:13
【问题描述】:
我有一个表(本例中为 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,即使它不存在于表中?有人见过这个吗?
提前致谢。
【问题讨论】:
标签: mysql primary-key auto-increment