Как откатить эффект последнего выполненного запроса MySQL - PullRequest
8 голосов
/ 15 мая 2010

Я только что выполнил команду

update sometable set col = '1';

по ошибке без указания условия where. Можно ли восстановить предыдущую версию таблицы?

Ответы [ 3 ]

11 голосов
/ 15 мая 2010

Если только вы ...

  1. Запустил транзакцию перед выполнением запроса и ...
  2. Еще не совершил транзакцию

... тогда нет, вам не повезло, исключая любые резервные копии предыдущих версий базы данных, которые вы, возможно, сделали сами.

(Если вы не используете транзакции при ручном вводе запросов, возможно, вы захотите в будущем предотвратить такие головные боли, как у вас, вероятно, сейчас. -секунд-позже ошибка.)

2 голосов
/ 15 мая 2010

Подумайте о включении sql_safe_updates в будущем, если вы беспокоитесь о том, чтобы сделать это снова.

SET SESSION sql_safe_updates = 1
1 голос
/ 15 мая 2010

Нет. В MySQL есть поддержка транзакций для некоторых типов таблиц, но, поскольку вы задаете этот вопрос, держу пари, что вы его не используете.

Каждый делает это один раз. Когда ты делаешь это дважды, ты должен беспокоиться:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...