我正在运行“bash for”脚本来更新 mysql 中的某些记录,如下所示:
for i in `cat yahoo.txt`; do mysql $DB --batch -fe "update users set email=concat(left(email, instr(email, '@')), 'yahoo.com') where email like '%@$i';" ; done
但即使使用--force,更新也会在出现第一个错误后停止:
ERROR 1062 (23000) at line 1: Duplicate entry '[email protected]' for key 3
有什么办法可以强制它继续吗?
答案1
尝试改变更新到更新忽略
http://dev.mysql.com/doc/refman/5.0/en/update.html:
使用 IGNORE 关键字,即使更新过程中出现错误,更新语句也不会中止。发生重复键冲突的行不会被更新。如果行的列被更新为会导致数据转换错误的值,则该行将被更新为最接近的有效值。