记一次误删数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tfstone/article/details/83899531

js中 0、' '、FALSE是等价的,null 和 undefined等价,那有没有考虑过0 和 null什么时间会等价呢,我用血淋淋的教训告诉你;

 

业务场景是这样的:

现在需要设置一个代理人,在员工请假有事时可以由此代理人提供服务;在设置代理人时,会把该员工所有权限赋予代理人,需要标识新增的权限数据,以便后续取消代理人时删除这些新增的权限;

我在mysql某张表中创建了一个int类型的字段,由此字段作为新增数据的标记,默认为null(开始创建的是varchar类型,是正确的,但是由于自己在实体类中把该字段定义为临时字段,导致插入数据一直为空,没发现问题的我于是尝试改字段类型);

然后鬼使神差地我把插入数据的值标记为了0,

再然后,我以0为标识 if x==0 delete… ,结果界面卡了几秒,当我意识到不对劲的时候,已经阻止不了将要到来的悲惨结果,表空了。。关联的两个子表数据也都空了。。懵逼中。。

 

教训:mysql int类型默认值设置为空,结果会自动转成0

从此谨记 0 、null、''、false 、undefined 在不同场景的应用时一定要小心;

 

--------------------------------------------------------------

后记是老大出手数据恢复;

得亏是已经晚上很晚而且项目是内部试用,所以我先网上百度了一堆 ,通过binlog也成功导出数据库文件,但看了完全懵逼,长这样:

几十万行要老命了,果断求助;

猜你喜欢

转载自blog.csdn.net/tfstone/article/details/83899531