MySQL Auto Increment Id的奇怪问题

时间:2012-02-28 15:21:24

标签: php mysql

我的表中有一个自动增量ID列,当我使用PHP插入记录时它确实可以正常工作。我必须每小时使用DELETE语句删除此表中的记录。我更改了PHP.ini文件并重新启动了机器。出于某种原因,自动增量ID再次从“1”开始。重新启动机器时,表中没有记录。我在IIS下运行PHP 5.3.8和MySQL 5.5.21。如果有任何建议,请告诉我。这是我的表架构。

    CREATE TABLE `test_table` (
  `test_id` int(11) NOT NULL AUTO_INCREMENT,
  `test_date` datetime DEFAULT NULL,
  `test_location` varchar(2000) NOT NULL,
  `test_summary` varchar(4000) NOT NULL,
  `create_dtm` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`test_id`)
) ENGINE=InnoDB 

这是我的插入查询

$Sql = "INSERT INTO test_table(test_date, test_location, test_summary) VALUES ('" .sDate. "', '" .$location. "', '" .$summary. "')";

        $Result = mysql_query($Sql) or die(mysql_error());
        $new_id = MySql_Insert_Id();

这是DELETE。

        $Sql1 = "DELETE FROM test_table";
        $Result1 = mysql_query($Sql1) or die(mysql_error());

1 个答案:

答案 0 :(得分:2)

使用不带where子句的DELETE与TRUNCATING表相同,因此它们都重置了表的Next AutoIndex值。 (这是人们通常想要/期望的)

可以使用以下内容来解决这个问题:

  

的mysql_query(       sprintf的(           “ALTER TABLE tbl_name AUTO_INCREMENT =%d”,           mysql_insert_id()+ 1       ));

(如果DELETE清除了插入值,那么你只需要在DELETE / TRUNCATE之前缓存它)

相关问题