mysql: восстановить значение столбца из резервной копии - PullRequest
2 голосов
/ 10 февраля 2012

У меня проблемы. Вместо запуска в скрипте

UPDATE table_name SET field=value WHERE id=12345

Я запустил

UPDATE table_name SET field=value

База данных резервируется каждый день (с помощью mysqldump). Какой самый простой способ восстановить значение этого столбца с помощью резервной копии. очевидно, я не могу применить эту резервную копию непосредственно, так как база данных постоянно изменяется.

Заранее спасибо !!

Ответы [ 4 ]

5 голосов
/ 10 февраля 2012

Я бы создал новую таблицу 'table_name2', идентичную вашему 'table_name', но содержащую данные вашей резервной копии.

Тогда используйте этот запрос:

UPDATE table_name SET
table_name.field = (SELECT table_name2.field 
                    FROM table_name2 
                    WHERE table_name.id = table_name2.id)
2 голосов
/ 10 февраля 2012

Я бы восстановил резервную копию таблицы в другой таблице с именем table_name_bck, а затем запустил следующий sql.

UPDATE table_name_bck tb, table_name t
SET t.field = tb.field
WHERE tb.id = t.id

Конечно, попробуйте это в тестовой среде, прежде чем предотвратить ухудшение ситуации.

Источник: http://www.electrictoolbox.com/article/mysql/cross-table-update/

1 голос
/ 10 февраля 2012

Итак, вы уничтожили все значения в столбце и хотите вернуть все значения в правильные строки?

Я бы порекомендовал разархивировать резервную копию в отдельную базу данных и сделать что-то вроде

    UPDATE live_db.table_name live 
INNER JOIN backup_db.table_name backup
        ON live.id = backup.id 
       SET live.field = backuop.field

Я бы также порекомендовал сделать копию вашего живого сайта, чтобы попробовать это сначала;)

1 голос
/ 10 февраля 2012

Вы можете попробовать загрузить резервную копию в другую базу данных, а затем сделать что-то вроде этого (предполагая, что db1 - это производственная база данных, а db2 - временная база данных)

...