在这条MySQL语句中,出现语法错误的是:select sno from where jno='j1'and pno in(select pno from p where color='红'); ^^^^^^^^错误在于 from之后缺失表名。正确的语句应为:select sno from 表名 where jno='j1'and pno in(select pno from p where color='红');所以,完整正确的语句可以是:
select sno from 产品表 where jno='j1'and pno in(select pno from 零件表 where color='红');
或
select sno from product where jno='j1'and pno in(select pno from part where color='红');
问了一下社区的朋友,如果数据库有开启 binlog 那就还有恢复的可能。
用宝塔建的数据库默认都会开启 binlog 。
进入服务器内找到了 bin 文件。👇
由于是二进制文件,我们需要转成sql文件再导出来看一下。
$ /www/server/mysql/bin/mysqlbinlog /www/server/data/mysql-bin.000005 > /www/1.sql
下载到本地,用 vs 打开看一下内容。
直接滑到底,发现老黑是在 at 4126964 这里开始进行操作的。直接就 DROP 了,果然没有职业操守啊🤙
下面通过 binlog 恢复一下数据库。
# --start-position="219" 第一次操作库的偏移量
# --stop-position="4124564" 找一个卸库前的偏移量
/www/server/mysql/bin/mysqlbinlog --no-defaults /www/server/data/mysql-bin.000005 --start-position="4" --stop-position="4124564" | /www/server/mysql/bin/mysql -u root -p
回车->输入密码->回车
检查数据库发现表都还原回来了👏🏻
同理,如果是自己不小心删库的同学,也可以尝试用同样的方法恢复。