qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          CentOS下無法正常獲取MySQL數(shù)據(jù)庫表數(shù)據(jù)的問題

           之前,由于客戶要求在centOS下安裝系統(tǒng)應(yīng)用,因此有機(jī)會(huì)接觸了一下CentOS,順便也了解了下CentOS的常規(guī)操作,還有在CentOS下的MySQL相關(guān)操作。

            目前技術(shù)框架使用JSF(richfaces、facelets)+Spring+JPA(OpenJPA),不使用數(shù)據(jù)庫依賴的觸發(fā)器或存儲(chǔ)過程,所有業(yè)務(wù)邏輯在web服務(wù)器上執(zhí)行,因此數(shù)據(jù)庫基本不用考慮移植問題。但是本來在windows下運(yùn)行正常的系統(tǒng),在linux下卻沒法獲取一些表的內(nèi)容。由于數(shù)據(jù)庫的初始化,最初只是體現(xiàn)在幾個(gè)需要手工維護(hù)的表數(shù)據(jù)上,最終卻發(fā)現(xiàn)原來是因?yàn)閿?shù)據(jù)庫表名大小寫的問題!

            具體操作過程:

            1、在windows下,使用MySQL的客戶端工具“Navicat”,將當(dāng)前的數(shù)據(jù)庫導(dǎo)出到test.sql文件中。說明:導(dǎo)出的.sql文件中,所有的表名都是小寫。

            2、將導(dǎo)出的.sql文件拷貝至linux下,導(dǎo)入需要使用的數(shù)據(jù)庫中

            3、啟動(dòng)web服務(wù)器,訪問服務(wù)。問題出現(xiàn):許多表無法訪問。

             4、在mysql中使用“show tables;”命令,發(fā)現(xiàn)表名有重復(fù),重復(fù)的表名區(qū)別在于大小寫,大寫的表名與對(duì)應(yīng)的實(shí)體bean名相同。找到問題:表名大小寫造成的數(shù)據(jù)無法訪問。 (linux 下的 MySQL 安裝完后,默認(rèn)區(qū)分表名的大小寫,不區(qū)分列名的大小寫;Windows下默認(rèn)不區(qū)分大小寫 )

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

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

            例如:

          @Table(name="sys_user")

            ● 使用Linux下MySQL的相關(guān)參數(shù),使MySQL不區(qū)分大小寫( lower_case_table_names=1 )

            上述兩種方法,第一種是較為通用的解決方案,但是需要開發(fā)人員更改全部的實(shí)體bean,然后重新編譯;第二種方案適合于系統(tǒng)已經(jīng)進(jìn)入生產(chǎn)環(huán)境的狀況,并且對(duì)如何修改linux下的MySQL配置需要一定的專業(yè)知識(shí)及經(jīng)驗(yàn),對(duì)實(shí)施人員技術(shù)要求較高。

            關(guān)于如何修改CentOS下的MySQL不區(qū)分大小寫的具體操作方法:

            用 root 帳號(hào)登錄后,在 /etc/my.cnf 中的 [mysqld] 后添加添加 lower_case_table_names=1 ,重啟Mysqld 服務(wù)。服務(wù)重新啟動(dòng)之后,已設(shè)置成功:不區(qū)分表名的大小寫

            關(guān)于lower_case_table_names 參數(shù)詳解: lower_case_table_names參數(shù)有兩個(gè)值:[0、1 ]其中0 :區(qū)分大小寫,1 :不區(qū)分大小寫

            補(bǔ)充說明:

            關(guān)于持久層,使用Spring自動(dòng)生成的DDL來創(chuàng)建對(duì)應(yīng)的持久層數(shù)據(jù)庫表及索引等數(shù)據(jù),簡(jiǎn)化實(shí)施工作的復(fù)雜度

          posted on 2012-09-07 10:14 順其自然EVO 閱讀(928) 評(píng)論(1)  編輯  收藏

          評(píng)論

          # re: CentOS下無法正常獲取MySQL數(shù)據(jù)庫表數(shù)據(jù)的問題 2013-06-28 10:01 qiurc

          給力!
          修改后果然可以了。  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 利川市| 易门县| 宝山区| 多伦县| 南召县| 高台县| 芒康县| 田阳县| 晋州市| 章丘市| 靖边县| 曲周县| 邻水| 沙雅县| 定边县| 改则县| 蓝田县| 新龙县| 泸定县| 大渡口区| 凤山县| 永新县| 绥棱县| 察哈| 六枝特区| 环江| 田林县| 多伦县| 县级市| 中方县| 图片| 东明县| 房产| 淮滨县| 潼关县| 榆树市| 平原县| 田东县| 达日县| 海林市| 新建县|