为什么我不能准备这个 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
与 ?
结合使用时遇到语法错误。
我的猜测是它失败了,因为给定的值将被替换为两个单引号之间的值(尽管这只是一个猜测)。
我想通过首先找到最大 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
与 ?
结合使用时遇到语法错误。
我的猜测是它失败了,因为给定的值将被替换为两个单引号之间的值(尽管这只是一个猜测)。