php - MySQL自动增量ID的奇怪问题

标签 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();

这里是删除。

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

最佳答案

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

在您的情况下可能可以使用类似以下内容来解决此问题:

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

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

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

相关文章:

php - 为什么 array_diff_uassoc 比较值不匹配的键

PHP + SQL - 选择存在时的情况 (...) - 如果 0 插入行

javascript - 为什么 json_encode 返回数组而不是对象?

mysql - UNION ALL 的派生表和大量数据库的索引使用情况

Mysql 'match against' 具有多个条件

php - 数据库中的下拉菜单没有结果

PHP和CHMOD问题

mysql - 在 MySQL 中查找组组

mysql - 项目中的数据库设计问题?

php - php mysql不打印标点符号显示语法错误