【解决思路】HTTP Status 500 Type Exception ReportMessage Request processing failed; 【已解决】
目錄
零、前言
一、看錯誤提示
二、分析錯誤
三、定位問題
四、解決問題
Type Exception ReportMessage Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:? PreparedStatementCallback; bad SQL grammar [delete from user_detail where username=?]; nested exception? is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'username' in 'where clause'Description The server encountered an unexpected condition that prevented it from fulfilling the request.
零、前言
? ? ? ?經常測試的一個網頁,突然報錯500。前面也沒有發(fā)生過,但突然報錯,只能先改錯了,不然都沒法進入頁面。為什么會調用到存在bug的語句,而以前沒有發(fā)生這種情況?這一問題沒能想清楚,只能歸咎于編譯器了。
? ? ? ?百度了很多,發(fā)現有很多類似的報錯,但大家的錯誤并不一樣。問題的產生都是個例,不能生搬硬套,需要根據錯誤提示和自己的工程代碼對應進行改正。其他博主均是指出自己遇到的錯誤,并解決之,讓新手的我看得似懂非懂,最后問題還是沒解決。為此,我摸索了許久,終是解決了,在這里詳細解釋一下解決思路,如此也能給他人解決自己遇到的問題提供思路和方法。
一、看錯誤提示
Cause:?
1、org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [delete from user_detail where username=?]
2、com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'username' in 'where clause'
二、分析錯誤
? ? ? ?這里面涉及到了SQL語句,然后Unknown column 'username' in 'where clause'這說明是SQL語句與數據庫表結構不統一導致的問題!即原因是未知的字段“username”,user_detail表中缺少字段!
首先在mysql中顯示user_detail表結構和內容:
發(fā)現的確少了username字段。(為什么缺少該字段還要去操作該字段呢?)
三、定位問題
? ? ? ?這里面user_detail表缺少字段username,是由于第一個問題中在user_detail表內操作了username字段。其實發(fā)生錯誤第一個錯誤往往是解決問題的關鍵,因此就去查詢一下操作位置,發(fā)現delete操作是需要根據users表一起對應刪除username的用戶信息。而users表中是username
字段,而對應user_detail表中對應為real_name字段,從而引發(fā)的錯誤。
users表結構:
四、解決問題
? ? ? ?找到調用函數位置,調用了removeUserDetail,然后對應找到removeUserDetail定義位置,并修改其中的操作字段。
//刪除 userService.removeUser(localname); userService.removeUserDetail(localname);?改正之前:
public void removeUserDetail(String userName){String sql = "delete from " + ModelMeta.USER_DETAIL+ " where username=?";this.genericEntityDao.update(sql, new Object[] { userName }); }改正之后:
public void removeUserDetail(String userName){String sql = "delete from " + ModelMeta.USER_DETAIL+ " where real_name=?";this.genericEntityDao.update(sql, new Object[] { userName }); }修改后,HTTP ?Status 200就能正常訪問頁面了。
總結
以上是生活随笔為你收集整理的【解决思路】HTTP Status 500 Type Exception ReportMessage Request processing failed; 【已解决】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用无人机 LiDAR 的重叠树冠的新型
- 下一篇: EasyScheduler学习(一):部