先是在日誌裏出現了數據庫
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38e46e4a]apache
看網上的博客,覺得是XML中事務標籤配錯了,檢查了好一陣子,發現並無錯。session
接下來看日誌中的報錯app
MySQLIntegrityConstraintViolationException: Column 'id' in field list is ambiguous
違反惟一建約束???spa
而後我去代碼裏查看,發現是代碼邏輯寫錯了,日誌
public ServerResponse<String> checkValid(String str, String type) { if (StringUtils.isNotBlank(type)) { if (Const.USERNAME.equals(type)) { int resultCount = userMapper.checkUsername(str); if (resultCount > 0) { return ServerResponse.createByErrorMessage("用戶名已存在"); } } if (Const.EMAIL.equals(type)) { int resultCount = userMapper.checkEmail(str); if (resultCount > 0) { return ServerResponse.createByErrorMessage("Email已存在"); } } } else { return ServerResponse.createByErrorMessage("參數錯誤"); } return ServerResponse.createBySuccessMessage("校驗成功"); }
if (resultCount > 0) { return ServerResponse.createByErrorMessage("用戶名已存在"); } 原本是從數據找到一條數據,說明數據庫裏已經有該用戶,不該該放行,我把條件寫成了等於0,使這條重複的記錄進入數據庫,形成違反惟一鍵