mysql lower-case-table-names引數

longqidong發表於2014-06-17
線上有業務用到開源的產品,其中SQL語句是大小寫混合的,而建表語句都是小寫的,mysql預設設定導致這些執行失敗。
就需要設定忽略大小寫。設定lower-case-table-names=1,重啟mysql例項生效。
這時就產生了另外一個問題,之前的大寫字母的資料庫名都失效了。都提示找不到資料庫名。註釋掉個lower-case-table-names=1.
則沒有這個問題,因此這個問題肯定是lower-case-table-names引數引起的。故查詢了官方解釋:

Mysql官方文件的介紹:

Value

Meaning

0

Table and database names are stored on disk using the lettercase specified in the CREATE TABLE orCREATE DATABASE statement. Name comparisons are case sensitive. You should not set this variable to 0 if you are running MySQL on a system that has case-insensitive file names (such as Windows or Mac OS X). If you force this variable to 0 with --lower-case-table-names=0 on a case-insensitive file system and access MyISAM tablenames using different lettercases, index corruption may result.

1

Table names are stored in lowercase on disk and name comparisons are not case sensitive. MySQL converts all table names to lowercase on storage and lookup. This behavior also applies to database names and table aliases.

2

Table and database names are stored on disk using the lettercase specified in the CREATE TABLE orCREATE DATABASE statement, but MySQL converts them to lowercase on lookup. Name comparisons are not case sensitive. This works only on file systems that are not case sensitive! InnoDB table names are stored in lowercase, as for lower_case_table_names=1.

 

預設為0,大小寫敏感。

設定1,大小寫不敏感。建立的表,資料庫都是以小寫形式存放在磁碟上,對於sql語句都是轉換為小寫對錶和DB進行查詢。

設定2,建立的表和DB依據語句上格式存放,凡是查詢都是轉換為小寫進行。

 

If you plan to set the lower_case_table_names system variable to 1 on Unix, you must first convert your old database and table names to lowercase before stopping mysqld and restarting it with the new variable setting. To do this for an individual table, use RENAME TABLE:

 

當想設定lower_case_table_names = 1時,在重啟資料庫例項之前就需要將原來的資料庫和錶轉換為小寫。

 

官方文件的解釋。要開啟lower_case_table_names = 1 。先要將大寫字母資料庫更改為小寫。否則將找不到資料庫名。

 所以要想忽略大小寫,還需要提前將大寫資料庫名更改小寫,否則報錯。資料庫名無法rename.可以新建一個小寫的資料庫名。
然後rename table 到新的資料庫,完成表的遷移。

在進行資料庫引數設定之前,需要掌握這個引數帶來的影響,切不可盲目設定。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22418990/viewspace-1184628/,如需轉載,請註明出處,否則將追究法律責任。

相關文章