測試人員告訴我的第一個bug

昨天週一,將項目移交測試人員,下午時候測試人員告訴我了一個bug,


新建組☞輸入組名☞點擊確定

此時出現了卡頓現象,該彈窗沒有消失,測試人員連續點了多次確定,造成的結果是當卡頓消失後,出現了好多同名的組。

但只有這一次卡頓,也無法再次測驗,於是想到了一個模擬卡頓的方法:給數據庫表加鎖。

MySQL數據庫,工具是navicat:

加鎖語句:lock tables 表名  write;    這句話可以阻止向表裏添加數據。

此時在頁面連續點擊確定後彈窗不會消失,可以連續點擊。

然後解鎖:unlock tables;

解鎖完畢後,該表裏會突然多出好幾條相同名字的記錄,此時,模擬成功。

問題出現原因:表上鎖後,添加操作的第一條數據已經進入添加階段,但是沒法添加成功,後臺代碼還未運行到給頁面做返回的結尾。此時第二條、第三條。數據依次進來,其狀態和第一條類似,表解鎖後,多條記錄在很短的時間裏完成添加操作,導致出現同名現象。

解決辦法:給頁面要顯示的主要內容加上唯一約束。

唯一約束,該列可以有空數據,但是不能有重複的數據。

添加唯一約束方式:

1.創建表時:

       CREATE TABLE t_user (
      Id int(11) NOT NULL AUTO_INCREMENT,  -- 自增
      username varchar(18) NOT NULL unique,  -- 唯一性約束

      password varchar(18) NOT NULL,
       PRIMARY KEY (`Id`)
      ) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;

2.已經建好的表
  alter table `t_user` add unique(`username`);






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章