【问题标题】:Reset table's AUTO_INCREMENT in php在php中重置表AUTO INCREMENT
【发布时间】:2017-05-03 12:29:19
【问题描述】:

我有一个数据库,它必须在其id 列中维护严格的主键数字序列。即 1、2、3、4、5 等。

现在,当我删除一行时,我需要使用以下方法进行重新计数和增量重置:

SET @count = 0; 
UPDATE `Main` 
SET `id` = @count:= @count + 1; 
ALTER TABLE Main 
AUTO_INCREMENT =1;

这在输入 MySQL 命令行时工作正常,这正是我想要的,但是我需要从 PHP 脚本命令执行它。我用:

$sql="SET @count = 0"; 
$result=$database->query($sql);
$sql="UPDATE Main SET id = @count:= @count + 1"; 
$result=$database->query($sql);
$sql="ALTER TABLE Main AUTO_INCREMENT =1"; 
$result=$database->query($sql);

现在前两个重新计数行工作正常,但AUTO_INCREMENT 行不会重置自动递增计数器。同样"ALTER TABLE Main AUTO_INCREMENT =1;" 可以直接从 MySQL 命令行正常工作,但在通过 PHP 脚本执行时不能正常工作。

注意:数据库使用mysqli_query 命令。

【问题讨论】:

  • 尝试在同一行中运行它们:$sql="SET @count = 0; UPDATE `Main` SET `id` = @count:= @count + 1; ALTER TABLE Main AUTO_INCREMENT =1;"
  • 不,我刚才确实尝试过一次又一次,但它甚至没有重新计算主键。我也试过用逗号和不同的标点符号等替换分号......

标签: php mysql increment


【解决方案1】:

好的,我找到了。 AUTO_INCREMENT 驻留在“information_schema.tables”数据库中,我的用户对该表只有“USAGE”权限。授予“ALTER”权限后,它可以正常工作。 谢谢。

【讨论】:

    猜你喜欢
    • 2013-09-09
    • 2017-10-24
    • 2019-12-30
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 2022-12-19
    • 2019-04-01
    • 2019-09-29
    相关资源
    最近更新 更多