我想重新排序我的表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'值。 怎么会发生?以及如何解决? 抱歉英文不好。
答案 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