2016-02-05 162 views
1

我需要关于让我感到困惑的东西的指导。我有一个像99%的时间工作的MySQL插入查询,但在少数情况下,自动增量字段更新但行未插入。查询如下:mysql插入自动增量,但不插入行

$result = mysql_query("insert into receipts 
    values('','".$rcptno."','".$cid."','".$names."','".$stream."','".$pname."', 
    '".$fintot."','cr','".date('Y/m/d')."','".date('Ymd')."','1','".$username."','". 
    $sess."','".$refno."','".$prevbal."','".$newbal."')"); 

当我尝试再次插入相同的数据,它插入完美。我只想知道可能导致此问题的原因。

在此先感谢。

+1

这很正常。即使实际记录没有写入磁盘,auto_increment也会增加。这种行为必须是这样的,否则MySQL将无法保证安全的并发访问。如果你想知道哪里出了问题(通常是死锁问题) - 使用'SHOW ENGINE INNODB STATUS;'并读取冗长的消息,看看导致MySQL拒绝将数据写入磁盘的原因。发生这种情况时,通常的做法是重新尝试交易。 – Mjh

回答

1

id始终递增。但是,如果插入由于某种触发器而失败或事务回滚,则自动增量值不会被重用。