Назад | Перейти на главную страницу

MySQL продолжить после ошибки повторяющейся записи

Я запускаю сценарий 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 оператор обновления не прерывается, даже если во время обновления возникают ошибки. Строки, в которых возникают конфликты повторяющихся ключей, не обновляются. Вместо этого строки, столбцы которых обновляются до значений, которые могут вызвать ошибки преобразования данных, обновляются до ближайших допустимых значений.