MySQL:重置 AUTO_INCREMENT

标签 mysql

我正在尝试根据其中当前的行数重置其中一个表中的自动增量值。这是我到目前为止的代码。

SET @numrows = 0;

SELECT COUNT(*) total, @numrows := COUNT(*) + 1 numrows FROM maj_user ;
ALTER TABLE `maj_user` AUTO_INCREMENT = @numrows ;

如果我在 MySQL Workbench 中执行它,效果会很好。但是,我需要将其保存为 SQL 文件并将其作为数据库导入脚本的一部分执行。如果我这样做,我会得到这个:

ERROR 1064 (42000) at line 39: You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right syntax to
use near '@numrows' at line 1

第 39 行是 ALTER TABLE 语句。有什么想法吗?

最佳答案

你能改变你的语法来跳过实际设置@numrows吗?我不确定问题出在哪里,但解决方法似乎是这样的:

ALTER TABLE `maj_user` AUTO_INCREMENT = (SELECT COUNT(*) + 1 from maj_user);

关于MySQL:重置 AUTO_INCREMENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749823/

相关文章:

php - 动态更新下拉菜单

MySQL InnoDB Memcached 无法打开带有负字符的表

mysql - 如何获取列中逗号之前的值

Mysql在一条语句中使用left join删除多个表导致FK违规

mysql - 将 CASE WHEN 与 GROUP BY 一起使用

php - MySQL 更新的多个 PHP `` `for ``` 循环

mysql - 如果行名称位于单独的表中,如何创建 mysql 数据透视表?

mysql - 这个 SQL 查询有什么错误?

mysql - 第二组中每组中最大的 n 个

java - 获取 SQLException : Driver:org. hsqldb.jdbcDriver 返回了 tomee 中 URL 的 null