为什么我不能用bash脚本重新排序自动增量mysql表?

时间:2014-09-16 06:37:46

标签: mysql bash

我想重新排序我的表ID。我尝试了两种不同的方法,从MySQL命令和我的bash脚本。但为什么我的bash脚本无法按ID重新排序? 这是我的代码:

First try :
echo "set @num=0" | mysql -D$db -u$user -h$host -p$pass
echo "update list set id=@num:=(@num+1)" | mysql -D$db -u$user -h$host -p$pass
echo "alter table list AUTO_INCREMENT=1" | mysql -D$db -u$user -h$host -p$pass

Second try :
mysql -D$db -u$user -p$pass -h$host "set @num=0"
mysql -D$db -u$user -p$pass -h$host "update list set id=@num:=(@num+1)"
mysql -D$db -u$user -p$pass -h$host "alter table list AUTO_INCREMENT=1"

每次我在bash脚本中使用该代码时,都会给出如下错误:

ERROR 1062 (23000) at line 1: Duplicate entry '0' for key 'PRIMARY'

但是当我从终端直接使用MySQL时它没有显示出来。而且我确信我的ID中没有任何'0'值。 怎么会发生?以及如何解决? 抱歉英文不好。

1 个答案:

答案 0 :(得分:0)

我通过将命令写入如下文件来管理:

(auto.sql - 不要忘记每行末尾的半冒号)

set @num=0;
update list set id=@num:=(@num+1);
alter table list AUTO_INCREMENT=1;

保存文件,然后使用.sql文件作为输入运行mysql:

 mysql -uusername -ppassword database < auto.sql