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

时间:2015-03-13 14:25:00

标签: mysql prepared-statement

我想首先找到max id值,为每列设置auto_increment值。

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

准备好的陈述的mysql docs显示了类似的格式,所以我很困惑。

当我尝试运行prepare语句时,我遇到了失败。为什么呢?

下面是我尝试准备常规语句时的输出,然后当我尝试使用'?'准备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

1 个答案:

答案 0 :(得分:1)

另一种选择是

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

出于某些原因,使用prepare?时,似乎有很多人遇到语法错误。

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