为什么我不能准备这个 sql 语句来设置 auto_increment?

Why can't I prepare this sql statement to set auto_increment?

我想通过首先找到最大 ID 值来为每列设置 auto_increment 值。

我引用了 this SO question 中的代码。

预处理语句的 mysql docs 显示了类似的格式,所以我很困惑。

当我尝试 运行 准备语句时,我失败了。为什么?

下面是我尝试准备常规语句时的输出,然后是我尝试准备带有“?”的 auto_increment 语句时的输出用于稍后绑定。

mysql> PREPARE stmt1 FROM 'ALTER TABLE user AUTO_INCREMENT=2';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> PREPARE stmt1 FROM 'ALTER TABLE user AUTO_INCREMENT=?';
ERROR 1064 (42000): 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 '?' at line 1

另一种选择是

set @alter_statement = concat('alter table user auto_increment = ', @value);
prepare stmt1 from @alter_statement;
execute stmt1;
deallocate prepare stmt1;

由于某些原因,似乎很多人在将 prepare? 结合使用时遇到语法错误。

我的猜测是它失败了,因为给定的值将被替换为两个单引号之间的值(尽管这只是一个猜测)。