記錄本博客從windows server 2008 遷移到centos碰到的問題

本文原地址來自於我的個人博客:www.endless365.com,希望得到各位的關注。

本文詳細地址出自於:http://www.endless365.com/article/get?type=tec&id=142

今天在對本博客做遷移的時候,從windows server 2008 遷移到centos裏面,一直碰到了hibernate在查詢字父類的時候獲取不到子類的信息,然後進行了以下分析。

    採取排除法將問題範圍一步步的縮小。

    1、從windows遷移到centos中,路徑可能會存在不一致,所以先檢查所有的路徑是否正常,結果正常。

    2、既然在windows環境下能查詢出來,那肯定就不是代碼的問題,增加打印,查看打印日誌,發現從數據庫獲取到的值父類instanceof 子類都爲false,那就肯定是hibernate和數據庫的問題。

    3、檢查數據庫的日誌,發現了一個警告,當然出現了警告不管是不是這個問題的原因都應該解決。警告如下:

    QQ圖片20151112101528.png

    估計這個是由於數據庫編碼導致的,查看了數據庫的my.cnf配置文件,確實沒有數據編碼的配置,mysql默認的編碼爲latin1,修改爲utf-8。重啓數據庫,該問題消失。

    4、刪除從項目遷移過來的數據,讓hibernate自動生成,看是否能夠獲取到子類信息,結果竟然是能夠獲取到,趕緊對比一下兩個數據庫表的結構,發現子類表在不同系統下命令不一樣,比如t_articleCode和t_articlecode,突然想起mysql 在linux下面默認區分大小寫,一個很重大的線索,趕緊修改爲對大小不敏感(lower_case_table_names=1)。
    5、重啓數據庫和服務,將原有遷移數據導入,問題解決。


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