mysql - MySQL自动增量问题

标签 mysql primary-key auto-increment

我有一个表(本例中为 table_name),其中有一个名为 id_table_name 的列,该列为 AUTO_INCRMENT

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

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 步:从 your_table_name 中选择 max(您的主键字段);
步骤 2:更改表 your_table_name AUTO_INCRMENT = value_u_got_from_step1 + 1;
你可以在步骤2中输入任何值而不是1...我认为这可能有效...

关于mysql - MySQL自动增量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481753/

相关文章:

sql - 违反唯一键约束时的主键标识值增量

mysql - 在mysql中使用复合键作为外键

postgresql - 设置自动增量值

mysql - 如何从json字段获取值

sql - 仅使用 SQL 的 MySQL INSERT

sql - 你能在 SQL 中定义 "literal"表吗?

mysql - 奇怪的 MySQL 性能问题

PostgreSQL - 随机主键

sql - 使用 rownum 在 Oracle 上更新具有递增 ID 的表是否安全?

mysql - 'string' 中的 SQL 自动增量