1. 程式人生 > >記錄本部落格從windows server 2008 遷移到centos碰到的問題

記錄本部落格從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、重啟資料庫和服務,將原有遷移資料匯入,問題解決。