1. 程式人生 > >記一次誤刪資料

記一次誤刪資料

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也成功匯出資料庫檔案,但看了完全懵逼,長這樣:

幾十萬行要老命了,果斷求助;