操作数据库 update 忘了加 where

2022-01-21 09:46:25 +08:00
 moonchild

处理一个很不合理的测试需求,需要手动修改数据库若干条记录,平时用惯了 orm ,真在终端写 sql 语句的机会非常少。也是由于基本功太生疏,导致在 select 找到要修改的记录之后直接 update 一敲忘了加 where ,结果把所有数据都更新了,影响是相关所有数据变的不可用,并且影响了前端组件的加载。现在回滚数据库就只能损失一天的数据了,还好是集成环境,如果是生产环境,真不敢想是什么后果。

9310 次点击
所在节点    数据库
90 条回复
pengtdyd
2022-01-21 14:47:55 +08:00
不要怕啊,赶紧执行 rm -rf 恢复一下,快!!!!
aeli
2022-01-21 14:54:04 +08:00
遇到过一次 navi 的坑,查询 where 是中文字符,结果拷贝到正式环境执行的时候,中文字符被过滤掉了,变成了 where xx like '%%'
creanme
2022-01-21 15:03:15 +08:00
我朋友在生产环境犯了同样的错,被全集团通报了。
zakokun
2022-01-21 15:10:02 +08:00
@feiyangenator #47 这个办法确实好,严谨
jessun1990
2022-01-21 15:55:39 +08:00
生产环境上 sql ,建议用一些 sql 审核工具吧?
ryd994
2022-01-21 15:58:51 +08:00
只要是人就一定会出错,靠自觉是没用的。生产环境的命令一定要 code review 。即使有 review 也不能保证安全,因为可能俩人都犯傻了。所以还要限速限量,然后规模从小到大,执行一批检查一遍。
这都是无数事故总结出来的经验。
uiosun
2022-01-21 16:07:38 +08:00
update 忘了加 where

大哥,你们平台就没个提醒的?这都能直接提交?就离谱,这哪能靠人自觉啊!
Mac
2022-01-21 16:11:22 +08:00
我用 heidisql ,如果没 where 执行前会提示你
tabrye
2022-01-21 16:29:58 +08:00
敏感操作前先备份是好习惯
话说 测试库 不是随便玩
junphe
2022-01-21 16:31:40 +08:00
rm -rf / 这个操作我还真干过,不过立马反映过来,中止了!只是损失了一些数据,系统没有受影响!想想都后怕🐶
eric6699
2022-01-21 16:48:44 +08:00
@weiwenhao 哈哈,用 0 当成没传参数了吧
neptuno
2022-01-21 17:00:19 +08:00
一般提交这种 sql 需要多叫几个人 check 一下。
MonkeyJon
2022-01-21 17:00:29 +08:00
线上数据库除了查询操作,其他都需要发公文让领导知道,哪怕是一条 sql ,目前公司政策
RRRoger
2022-01-21 17:01:58 +08:00
教训:在做 update/delete 之前 一定要先 select 一下
wxboy
2022-01-21 17:05:24 +08:00
先写查询 /匹配语句,检查语句没有问题后,再写操作命令(update/delete)
labulaka521
2022-01-21 17:18:56 +08:00
update table set delete_time='xxxxx' where (order_id)
这种语句竟然不报错
815979670
2022-01-21 17:21:28 +08:00
我们一般就是先查询有多少条 然后再 update limit 查询条数 ,如果只处理 1 条 就是 limit 1
chevalier
2022-01-21 17:48:07 +08:00
线上都是先敲好 where 语句,然后再补 update ... set ...
就怕手抖提交了
liuxu
2022-01-21 17:56:08 +08:00
领导:问题不大。这小伙子永远不要再碰数据库了。
ilylx2008
2022-01-21 18:34:39 +08:00
程序员的必经过程之一。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829615

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX