Я запускаю сценарий 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 'example@yahoo.com' for key 3
Могу ли я заставить его продолжать?
попробуйте изменить Обновить к обновить игнорировать
http://dev.mysql.com/doc/refman/5.0/en/update.html :
С ключевым словом IGNORE оператор обновления не прерывается, даже если во время обновления возникают ошибки. Строки, в которых возникают конфликты повторяющихся ключей, не обновляются. Вместо этого строки, столбцы которых обновляются до значений, которые могут вызвать ошибки преобразования данных, обновляются до ближайших допустимых значений.