在 MySQL 中,數(shù)據(jù)庫(kù)和表對(duì)就于那些目錄下的目錄和文件。因而,操作系統(tǒng)的敏感性決定數(shù)據(jù)庫(kù)和表命名的大小寫敏感。這就意味著數(shù)據(jù)庫(kù)和表名在 Windows 中是大小寫不敏感的,而在大多數(shù)類型的 Unix 系統(tǒng)中是大小寫敏感的。
奇怪的是列名與列的別名在所有的情況下均是忽略大小寫的,而表的別名又是區(qū)分大小寫的。
要避免這個(gè)問題,你最好在定義數(shù)據(jù)庫(kù)命名規(guī)則的時(shí)候就全部采用小寫字母加下劃線的組合,而不使用任何的大寫字母。
或者也可以強(qiáng)制以 -O lower_case_table_names=1
參數(shù)啟動(dòng) mysqld
(如果使用 --defaults-file=...\my.cnf 參數(shù)來讀取指定的配置文件啟動(dòng) mysqld 的話,你需要在配置文件的 [mysqld] 區(qū)段下增加一行 lower_case_table_names=1)。這樣MySQL 將在創(chuàng)建與查找時(shí)將所有的表名自動(dòng)轉(zhuǎn)換為小寫字符(這個(gè)選項(xiàng)缺省地在 Windows 中為 1 ,在 Unix 中為 0。從 MySQL 4.0.2 開始,這個(gè)選項(xiàng)同樣適用于數(shù)據(jù)庫(kù)名)。
當(dāng)你更改這個(gè)選項(xiàng)時(shí),你必須在啟動(dòng) mysqld
前首先將老的表名轉(zhuǎn)換為小寫字母。
換句話說,如果你希望在數(shù)據(jù)庫(kù)里面創(chuàng)建表的時(shí)候保留大小寫字符狀態(tài),則應(yīng)該把這個(gè)參數(shù)置0: lower_case_table_names=1 。否則的話你會(huì)發(fā)現(xiàn)同樣的sqldump腳本在不同的操作系統(tǒng)下最終導(dǎo)入的結(jié)果不一樣(在Windows下所有的大寫字符都變成小寫了)。
posted on 2007-11-23 12:42
josson 閱讀(330)
評(píng)論(0) 編輯 收藏 所屬分類:
數(shù)據(jù)庫(kù)