我试图在MySQL服务器上进行更新,并意外忘记添加一个应该编辑一行的额外WHERE子句.
由于我的错误,我现在编辑了3500多行.
我可能有备份,但自上次备份以来我做了很多工作,我只是不想浪费一切,因为1个错误的查询.
请告诉我,我可以做些什么来解决这个问题.
没有.
尽管如此,你可以很高兴你已经掌握了这种学习经验,并为你现在如何改变你的习惯而大大减少它再次发生的可能性感到自豪.你现在可以成为'大师',可以教幼小的幼崽,并引用经过实战训练的经验.
只有一件事你现在可以改正,那就是你的习惯,它会在未来帮助你。我知道这是一个老问题,OP 一定已经吸取了教训。我只是为其他人发布它,因为我今天也吸取了教训。
所以我应该运行一个查询,它应该更新大约 50 条记录,然后MySQL
返回 THIS 48500 row(s) affected
,由于WHERE
条件中的一个愚蠢的错误,这让我有点心脏病发作:D
所以这里是学习:
query
在运行它之前总是检查两次,但有时它无济于事,因为你仍然可能犯那个愚蠢的错误。DB
在运行任何会影响数据的查询之前始终备份您的数据会更好。TRANSACTION
,我认为这是一种轻松战胜灾难的好方法。从现在开始,这就是我对影响数据的每个查询所做的:我启动Transaction
,运行Query
,然后检查结果是否正常。如果结果没问题,那么我只是COMMIT
改变,否则我只是为了克服灾难ROLLBACK
START TRANSACTION;
UPDATE myTable
SET name = 'Sam'
WHERE recordingTime BETWEEN '2018-04-01 00:00:59' AND '2019-04-12 23:59:59';
ROLLBACK;
-- COMMIT; -- I keep it commented so that I dont run it mistakenly and only uncomment when I really want to COMMIT the changes
Run Code Online (Sandbox Code Playgroud)