【開源項目筆記:platform-wechat-mall】linux下 自定義管理員角色查詢商品列表爲空

隨着項目逐步完善,一些自帶bug漸漸露出了尾巴:)

本次的問題是:linux下 自定義管理員角色查詢商品列表爲空,而本地Windows下查詢正常。

1 查看網頁反饋信息

查詢請求上報後,服務器返回的錯誤是“500 內部異常,請聯繫管理員”。

都內部異常了,日誌裏肯定該有記錄,查看一下:

cd /usr/local/platform/logs
vi info.log

然而,日誌裏啥錯誤信息也莫得,這不禁讓人想起了曾經記錄過的問題:
linux下 部分模塊Log4j日誌不輸出
不會異常記錄模塊也是linux下日誌不能輸出吧?

2 解決linux日誌輸出異常錯誤

查看 RRExceptionHandler.java,還真就是同一個坑 :),改吧:

原代碼:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
……
public class RRExceptionHandler {
    private Logger logger = LoggerFactory.getLogger(getClass());
    ……
    }

修改後:

import org.apache.log4j.Logger;
……
public class RRExceptionHandler {
    protected Logger logger = Logger.getLogger(getClass());
    ……
    }

再次部署war,用自定義管理員角色查詢商品列表。

3 解決linux 查詢商品列表爲空

這次日誌裏有錯誤軌跡記錄了:

SQL: select dept_id from sys_role_dept where role_id IN (SELECT role_id FROM SYS_USER_ROLE WHERE user_id =  ?)
### Cause: java.sql.SQLSyntaxErrorException: Table 'platform-shop.SYS_USER_ROLE' doesn't exist
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'platform-shop.SYS_USER_ROLE' doesn't exist

劃重點:Table ‘platform-shop.SYS_USER_ROLE’ doesn’t exist。
emm……,果然是大小寫的問題又來了嗎?
Centos Tomcat 下部署Web項目中,我們在部署war項目之前修改了一個地方

修改表schedule_job的名稱爲SCHEDULE_JOB

原因就是linux區分大小寫會導致數據庫讀不到正確的表格。現在熟悉的朋友又回來了:)。

查看數據庫,果然table名是 sys_user_role。
查找“SYS_USER_ROLE”,出現在SysRoleDeptDao.xml

<select id="queryDeptIdListByUserId" resultType="long">
   select dept_id from sys_role_dept where role_id IN (SELECT role_id FROM SYS_USER_ROLE WHERE user_id =  #{value})
</select>

修改爲

<select id="queryDeptIdListByUserId" resultType="long">
   select dept_id from sys_role_dept where role_id IN (SELECT role_id FROM sys_user_role WHERE user_id =  #{value})
</select>

再次部署war,用自定義管理員角色查詢商品列表,ok!

出現過的錯誤更容易再次出現,古人誠不我欺!

That’s all!Thank you!

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