我有問題。相反launchin腳本mysql:從備份中恢復列的值
UPDATE table_name SET field=value WHERE id=12345
的我發起
UPDATE table_name SET field=value
數據庫被備份每天(使用mysqldump)。使用備份恢復該列值的最簡單方法是什麼?顯然,我無法正確地應用該備份,因爲數據庫會不斷更改。
預先感謝您!
我有問題。相反launchin腳本mysql:從備份中恢復列的值
UPDATE table_name SET field=value WHERE id=12345
的我發起
UPDATE table_name SET field=value
數據庫被備份每天(使用mysqldump)。使用備份恢復該列值的最簡單方法是什麼?顯然,我無法正確地應用該備份,因爲數據庫會不斷更改。
預先感謝您!
我會創造一個與'table_name'相同但包含備份數據的新表'table_name2'。
然後用這個查詢:
UPDATE table_name SET
table_name.field = (SELECT table_name2.field
FROM table_name2
WHERE table_name.id = table_name2.id)
你可以嘗試將備份加載到另一個數據庫中,然後讓這樣的事情(假定DB1是生產DB和DB2是臨時數據庫)
update db1.table set db1.field = db2.field where db1.id = db2.id
所以你在消滅了所有值列,並希望將所有值都放回正確的行中?
我建議解壓縮備份到一個單獨的數據庫,做這樣的事情
UPDATE live_db.table_name live
INNER JOIN backup_db.table_name backup
ON live.id = backup.id
SET live.field = backuop.field
我還建議讓您的生活網站的副本來試試這第一;)
我會恢復該表的備份在另一個表稱爲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/
如果數據庫未提交,然後回滾...:d – 2012-02-10 13:45:37
這是一個小時前完成。我該如何回滾? – Eugeny89 2012-02-10 14:31:52