数据库有些数据值为: "保密"
前面我在用 regex_replace 函数更新一些不规范数据
我顺手就用 update lawyers set working_years=regexp_replace(working_years, "保密", null); 把 "保密" 更新为 null
结果 working_years 字段全部被更新为 null !!!
有办法恢复吗,大佬救命!!!
数据库有些数据值为: "保密"
前面我在用 regex_replace 函数更新一些不规范数据
我顺手就用 update lawyers set working_years=regexp_replace(working_years, "保密", null); 把 "保密" 更新为 null
结果 working_years 字段全部被更新为 null !!!
有办法恢复吗,大佬救命!!!
|
1
手机叫个快车,赶紧收拾东西跑路
|
|
GeorgeGalwayJul 11, 2022
2
有备份的话回档吧
|
|
hidemyselfJul 11, 2022
3
DBA 呢,准备背锅吧。。
|
|
jjianwen68Jul 11, 2022
4
生产库?
|
|
skies457Jul 11, 2022
5
提桶跑路
|
|
lujiaosamaJul 11, 2022
6
呼叫 dba 恢复数据
|
|
7
|
|
8
不要慌不要慌太阳下山有月光。
|
|
quicksandJul 11, 2022
9
赶紧找数据库日志,看看能不能恢复
|
|
dem0nsJul 11, 2022
10
用不规范的操作更新不规范的数据 =.=
|
|
JsonNodeJul 11, 2022
11
备份没有,binlog 也没有?
|
|
rapperx2Jul 11, 2022
12
赶紧躺进棺材里,盖好!
|
|
iAndychanJul 11, 2022
13
op 人还在吗?
|
|
14
mysql 的 update 有一个很强的非标准特性,就是可以加 limit 。初学者请务必每次 update 请务必用 limit 1 。
|
|
15
从入门到删库,别紧张,要不,先全部修改成保密?
|
|
PMRJul 11, 2022 via Android
16
开事务日志 /binlog 没
没就抗拒从严 回家过年 |
|
fy1206Jul 11, 2022
17
备份没有的话 就看 binlog 开了没有 开了就可以解决(记好时间点), 没有开的话....
|
|
yyysuoJul 11, 2022
18
oracle 的话找 dba 按归档恢复一下应该就可以了,生产库的话,事故是跑不了了,不要拖,赶紧上报吧。
|
|
jackliang007Jul 11, 2022
19
联系主管恢复到上一个备份
|
|
dreaskyJul 11, 2022
20
自首吧
|
|
hs444Jul 11, 2022
21
之前在生产环境也干过这种事,但用的不是 mysql ,操作时事务也是手动提交的,一瞬间汗都要下来了,然后回滚了
|
|
ikarosJul 11, 2022
22
再把 null 更新成保密啊, 问题不大, 反正应该也没人知道哪些保密 哪些 null
|
|
danhahahaJul 11, 2022 via iPhone
23
保密不就是 null 的意思吗
|
|
24
解决了,想问一下大佬
update lawyers set working_years=regexp_replace(working_years, "保密", null) 这条命令为什么会把我的全部数据替换为 null ' |
|
F12Jul 11, 2022
25
还能上 v2 上找解决方案,应该问题不大
|
|
wzlyJul 11, 2022
26
先不要操作了,看下 data 目录下的 binlog 日志文件吧,以 utf8 打开,一个一个补数据吧
|
|
geekersharedJul 11, 2022
27
@kaiger 怎么解决的,目测你是没有加 where working_years = "保密"。
|
|
29
@kaiger #24 REGEXP_REPLACE() 函数在 str 中使用 replacement 替换和正则表达式 regexp 匹配的内容,并返回替换后的结果。
如果 str, regexp 或者 replacement 为 NULL ,REGEXP_REPLACE() 将返回 NULL |
|
zzvgtigerJul 11, 2022
30
同问 你是咋把数据找回来的
|
|
RRRogerJul 11, 2022
31
@philchang1995 regexp_replace 适用于 select 不适用于 update
|
|
32
https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-replace
If expr, pat, or repl is NULL, the return value is NULL. |
|
33
@kaiger #24 把保密更改为 null ,为什么要用 regexp_replace 这个正则函数?
正常思路难道不是这样吗? update lawyers set working_years=null where regexp_replace='保密'; 至于为什么换替换为 null ,根据文档 https://dev.mysql.com/doc/refman/8.0/en/regexp.html Replaces occurrences in the string expr that match the regular expression specified by the pattern pat with the replacement string repl, and returns the resulting string. If expr, pat, or repl is NULL, the return value is NULL. 大概意思正则匹配到了,则返回替换后的结果字符串,如果给定的三个参数里有 null ,则返回 null 。 而你的第三个参数恰好是 null ,所以全被替换成 null 了。 |
|
MoYi123Jul 11, 2022
35
下辈子改数据库前记得先打 begin;
|
|
39
都是惨痛教训:
1. 不是迫不得已不要手动改库 2. 真的要手动改库一定先 select 一下看看影响的行数 3. 改之前先改一条试试看, 防止写错了 4. 大规模改库要备份 |
|
42
有一个能跑就行
|
|
43
|
|
Ufo666Jul 11, 2022
44
怎么解决的!哇
|
|
fmumuJul 11, 2022
45
生产环境改数据一定要备份再执行,开日志
|
|
cubecubeJul 11, 2022
46
这种 update 或者 delete 都还好,都有 log ,dba 都能恢复
truncate 或者 drop 那种很难抢救回来(只能依靠之前的备份数据,会有丢失) |
|
neptunoJul 11, 2022
47
测试数据库都不测一下的吗?
|
|
james2013Jul 11, 2022
49
跑路了?
|
|
vinceallJul 11, 2022
50
update 不加 where dba 能让你跑?
|
|
shalkJul 11, 2022
52
怎么解决的,提了几个桶
|
|
toneewangJul 11, 2022
54
通过 binlog 可以回滚的吧,就是恢复成本的事情
|
|
TAFMTJul 11, 2022
55
最后怎么恢复数据的?+1
|
|
book1925Jul 11, 2022
56
事情怎么解决的?严重关注
|
|
controllerJul 11, 2022
57
改错数据库后端程序员必经之路。如果改错的是关键数据,只能停掉相关服务,防止错上加错,然后从备份和 binlog 恢复。如果不是关键数据,还能从业务逻辑里面重新搞到数据
|
|
winglight2016Jul 11, 2022
58
如果数据库是云平台上的 rds ,那就简单了。。。自建的就要靠自己定时备份了
|
|
59
一般这种更新,最好还是先 select 出来,确定下,再更新
|
|
sparkssssssssJul 11, 2022
60
有 binlog 为啥不能恢复呢,直接 binlong 反向操作下就好了
|
|
WIN2333Jul 11, 2022
61
任何数据修复都必须先备份
|
|
wdlthJul 11, 2022
62
你这 SQL 在我们 DBA 眼里肯定被打回,没有开事务,连 WHERE 也没有。
我们 UPDATE 生产库都得走 OA ,要两层审核,DBA 复核,并且会在一个部分克隆表中验证。 |
|
potatowishJul 11, 2022 via iPhone
63
@yeyypp92 非常同意,我一般都是先写查询语句,确定查询没问题了,再改写成更新语句,现在其他环境执行没问题了,再提交生产
|
|
jack778Jul 12, 2022
64
你没有责任,这是公司的责任,因为公司允许你这个菜鸟直接更新生成数据库,狗头
|
|
scanjxJul 12, 2022
65
人和数据库有一个能跑就好
|
|
di1012Jul 12, 2022
66
不加 where 条件就敢操作数据库
|
|
fihtJul 12, 2022
67
我也做过类似的事情 ahh~
不过公司上云之后就很方便了,云上的 MySQL 基本都能通过回滚救过来 |
|
James369Jul 12, 2022
68
没啥事发生?看来这些用户数据没什么价值
|
|
funboxJul 12, 2022
69
职业生涯终结
|
|
skadiJul 12, 2022
70
binlog
|
|
qwerthhusnJul 12, 2022
71
缅甸急招工,来吗?
|
|
badmarilloJul 12, 2022
72
信女愿一生吃素保佑下辈子不做程序员
|
|
jiazhoulvkeJul 12, 2022
73
有 binlog 怕啥,只要用的 binlog format 是 row ,改了什么都能看得到,写个脚本都能复原回来
|
|
74
|
|
bzshJul 12, 2022
75
抓取的数据啊,没所谓
|
|
someonedengJul 13, 2022
76
下次先约好黑车,别订飞机火车票
打开 binlog 先 select 出来看看 update 要带条件 |
|
mrochcnnnnnAug 31, 2022
77
哪天在 v2 上看到一个标题:
遇到一个问题,想用 regex 来解决,好了你现在遇到两个问题了 |