解決mysql數據庫大小寫敏感問題

解決mysql數據庫大小寫敏感問題
 
今天在部署java項目到linux服務器上去的時候出現了個小問題,數據庫是mysql,項目在我本地(windows環境下)是沒問題的。
 
錯誤信息:2012-09-06 00:01:29,314 INFO [org.springframework.jdbc.datasource.JdbcTransactionObjectSupport]
 - <JDBC 3.0 Savepoint class is available>
 
2012-09-06 00:01:29,903 WARN [org.hibernate.util.JDBCExceptionReporter]
 - <SQL Error: 1146, SQLState: 42S02>  www.2cto.com  
2012-09-06 00:01:29,903 ERROR [org.hibernate.util.JDBCExceptionReporter]
 - <Table 'mobilesys.T_UUU' doesn't exist>
 
開始以爲是配置文件配錯了,改了幾遍,還是同樣的問題,於是上網找原因,結果發現是數據庫配置問題。
 
主要原因是:“MySQL 中,數據庫和表其實就是數據目錄下的目錄和文件,因而,操作系統的敏感性決定數據庫和表命名的大小寫敏感。這就意味着數據庫和表名在 Windows 中是大小寫不敏感的,而在大多數類型的 Unix/Linux 系統中是大小寫敏感的。
 
MySQL大小寫敏感可以通過配置文件的lower_case_table_names參數來控制。
 
WINDOWS:
編輯MySQL安裝目錄下的my.ini 文件,在[mysqld]節下 添加 lower_case_table_names=0 (備註:爲0時大小寫敏感,爲1時大小寫不敏感,默認爲1),可以實現MySql按照建表Sql語句的大小寫狀態來定義表名。  www.2cto.com  
LINUX:
編輯/etc/my.cnf文件,在[mysqld]節下 添加 lower_case_table_names=1 參數,並設置相應的值 (備註:爲0時大小寫敏感,爲1時大小寫不敏感,默認爲0)。”(引用網上文章中的句子)。
 
當然,這樣雖然解決了問題,但是,把大小寫敏感去掉的話,也不是一件好事,肯定會存有很多隱患....最好還是修改映射文件中的table屬性對應的值,將裏面的表名和數據庫中的表名大小寫一樣。這樣做感覺合理一點...
發佈了93 篇原創文章 · 獲贊 8 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章