天天看點

CentOS下無法正常擷取MySQL資料庫表資料的問題

  具體操作過程:

  2、将導出的.sql檔案拷貝至linux下,導入需要使用的資料庫中

  3、啟動web伺服器,通路服務。問題出現:許多表無法通路。

   4、在mysql中使用“show tables;”指令,發現表名有重複,重複的表名差別在于大小寫,大寫的表名與對應的實體bean名相同。找到問題:表名大小寫造成的資料無法通路。 (linux 下的 mysql 安裝完後,預設區分表名的大小寫,不區分列名的大小寫;windows下預設不區分大小寫 )

  上述問題有兩種解決方案:

  ● 在jpa的實體bean的聲明中,使用“table”的“name”屬性,指定表名,表名盡量全部使用小寫,不同單詞之間使用下劃線連接配接

  例如:

@table(name="sys_user")

  ● 使用linux下mysql的相關參數,使mysql不區分大小寫( lower_case_table_names=1 )

  上述兩種方法,第一種是較為通用的解決方案,但是需要開發人員更改全部的實體bean,然後重新編譯;第二種方案适合于系統已經進入生産環境的狀況,并且對如何修改linux下的mysql配置需要一定的專業知識及經驗,對實施人員技術要求較高。

  關于如何修改centos下的mysql不區分大小寫的具體操作方法:

  用 root 帳号登入後,在 /etc/my.cnf 中的 [mysqld] 後添加添加 lower_case_table_names=1 ,重新開機mysqld 服務。服務重新啟動之後,已設定成功:不區分表名的大小寫

  關于lower_case_table_names 參數詳解: lower_case_table_names參數有兩個值:[0、1 ]其中0 :區分大小寫,1 :不區分大小寫

  補充說明:

====================================分割線================================

最新内容請見作者的github頁:http://qaseven.github.io/