mysql - 什么会导致自动递增主键字段 (mysql) 出现重复 ID?

标签 mysql insert lastinsertid

已解决

来自开发人员:问题是以前版本的代码仍在写入使用手动 ID 而不是自动递增的表。 self 注意:始终检查表被写入的其他可能位置。

我们在表中得到重复键。它们不是同时插入的(相隔 6 小时)。

表结构:

CREATE TABLE `table_1` (
  `sales_id` int(10) unsigned NOT NULL auto_increment,
  `sales_revisions_id` int(10) unsigned NOT NULL default '0',
  `sales_name` varchar(50) default NULL,
  `recycle_id` int(10) unsigned default NULL,
  PRIMARY KEY  (`sales_id`),
  KEY `sales_revisions_id` (`sales_revisions_id`),
  KEY `sales_id` (`sales_id`),
  KEY `recycle_id` (`recycle_id`)
) ENGINE= MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=26759 ;

插入:

insert into `table_1` ( `sales_name` ) VALUES ( "Blah Blah" )

我们使用 PHP5 运行 MySQL 5.0.20,并在插入查询后立即使用 mysql_insert_id() 检索插入 ID。

最佳答案

我以前在MySql数据库中遇到过几个重复键的错误,尽管主键已经定义并且auto_increment。每次都是因为表已损坏。

如果它已损坏,执行检查表应该会暴露问题。你可以通过运行来做到这一点:

CHECK TABLE tbl_name

如果它无论如何都损坏了(通常会说尺寸比实际尺寸大),那么只需运行以下命令来修复它:

REPAIR TABLE tbl_name

关于mysql - 什么会导致自动递增主键字段 (mysql) 出现重复 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/514018/

相关文章:

php - 获取数据时获取非法字符串偏移量警告

php - 根据 IF 语句插入具有值的行(在单个查询中)

mysql - 插入后sql触发错误

c - C中的双向链表,按值插入

php - MySQL+PHP : getting last_id of multiple/composite primary key

phpmyadmin 和 mysql pdo lastInsertId()

MySQL LAST_INSERT_ID() 与多条记录 INSERT 语句一起使用

php - 如何查找/插入缺失序列(自动增量)ID 中的数据?

mysql使用内部连接选择最高的唯一值

php - 从循环php将一行插入mysql