php - 在 php 中重置表 AUTO INCREMENT

标签 php mysql increment

我有一个数据库,它必须在其 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命令。

最佳答案

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

关于php - 在 php 中重置表 AUTO INCREMENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205912/

相关文章:

php - Magento 从用户购物车中删除优惠券代码

mysql - 抑制 MySQL 警告?

php - 如何计算网格中选中复选框的记录

php - 如何将 MySQL 语句 'show index' 与 PDO 一起使用?

php - 如何在新订单 WooCommerce 电子邮件通知中将 "Product"更改为 "Service"

php - 有没有可能的方法仅通过 mysql 中的 phpmyadmin 存储当前时间

c - c编程中的字母递增

variables - sed 增量号

java - JSP 中的变量没有增加

php - MySQL:选择随机条目,但偏重某些条目