【问题标题】:mysql insert auto increments but does not insert rowmysql插入自动增量但不插入行
【发布时间】:2016-02-05 10:08:25
【问题描述】:

我需要一些让我感到困惑的事情的指导。我有一个 mysql 插入查询,它在 99% 的时间里都可以工作,但在某些情况下,自动增量字段会更新,但不会插入行。查询如下:

$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."')");

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

提前致谢。

【问题讨论】:

  • 这很正常。即使实际记录没有进入磁盘,auto_increment 也会增加。这种行为必须是这样的,否则 MySQL 将无法保证安全的并发访问。如果您想知道出了什么问题(通常是死锁问题) - 使用SHOW ENGINE INNODB STATUS; 并阅读冗长的消息以查看导致 MySQL 拒绝将数据写入磁盘的原因。发生这种情况时,通常的方法是重试事务。
  • 学到了一些新东西 - SHOW ENGINE INNODB 。谢谢。

标签: mysql sql-insert


【解决方案1】:

id 总是递增的。但万一由于某些触发器导致插入失败或事务回滚,则不会重用自动递增的值。

【讨论】:

    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2014-12-05
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多