【解决思路】HTTP Status 500 Type Exception ReportMessage Request processing failed; 【已解决】
目錄
零、前言
一、看錯(cuò)誤提示
二、分析錯(cuò)誤
三、定位問(wèn)題
四、解決問(wèn)題
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.
零、前言
? ? ? ?經(jīng)常測(cè)試的一個(gè)網(wǎng)頁(yè),突然報(bào)錯(cuò)500。前面也沒(méi)有發(fā)生過(guò),但突然報(bào)錯(cuò),只能先改錯(cuò)了,不然都沒(méi)法進(jìn)入頁(yè)面。為什么會(huì)調(diào)用到存在bug的語(yǔ)句,而以前沒(méi)有發(fā)生這種情況?這一問(wèn)題沒(méi)能想清楚,只能歸咎于編譯器了。
? ? ? ?百度了很多,發(fā)現(xiàn)有很多類似的報(bào)錯(cuò),但大家的錯(cuò)誤并不一樣。問(wèn)題的產(chǎn)生都是個(gè)例,不能生搬硬套,需要根據(jù)錯(cuò)誤提示和自己的工程代碼對(duì)應(yīng)進(jìn)行改正。其他博主均是指出自己遇到的錯(cuò)誤,并解決之,讓新手的我看得似懂非懂,最后問(wèn)題還是沒(méi)解決。為此,我摸索了許久,終是解決了,在這里詳細(xì)解釋一下解決思路,如此也能給他人解決自己遇到的問(wèn)題提供思路和方法。
一、看錯(cuò)誤提示
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'
二、分析錯(cuò)誤
? ? ? ?這里面涉及到了SQL語(yǔ)句,然后Unknown column 'username' in 'where clause'這說(shuō)明是SQL語(yǔ)句與數(shù)據(jù)庫(kù)表結(jié)構(gòu)不統(tǒng)一導(dǎo)致的問(wèn)題!即原因是未知的字段“username”,user_detail表中缺少字段!
首先在mysql中顯示user_detail表結(jié)構(gòu)和內(nèi)容:
發(fā)現(xiàn)的確少了username字段。(為什么缺少該字段還要去操作該字段呢?)
三、定位問(wèn)題
? ? ? ?這里面user_detail表缺少字段username,是由于第一個(gè)問(wèn)題中在user_detail表內(nèi)操作了username字段。其實(shí)發(fā)生錯(cuò)誤第一個(gè)錯(cuò)誤往往是解決問(wèn)題的關(guān)鍵,因此就去查詢一下操作位置,發(fā)現(xiàn)delete操作是需要根據(jù)users表一起對(duì)應(yīng)刪除username的用戶信息。而users表中是username
字段,而對(duì)應(yīng)user_detail表中對(duì)應(yīng)為real_name字段,從而引發(fā)的錯(cuò)誤。
users表結(jié)構(gòu):
四、解決問(wèn)題
? ? ? ?找到調(diào)用函數(shù)位置,調(diào)用了removeUserDetail,然后對(duì)應(yīng)找到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就能正常訪問(wèn)頁(yè)面了。
總結(jié)
以上是生活随笔為你收集整理的【解决思路】HTTP Status 500 Type Exception ReportMessage Request processing failed; 【已解决】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用无人机 LiDAR 的重叠树冠的新型
- 下一篇: EasyScheduler学习(一):部