MySQL數據庫中庫、表名、字段的大小寫問題


MySQL數據庫中庫、表名、字段的大小寫問題

原文出處: https://blog.csdn.net/andyliulin/article/details/83020934

 在使用MySQL建庫的過程中發現了一個問題,無論怎么創建庫,創建出來的庫名都是小寫的。然后上網查了一下資料。

 在MySQL中,數據庫和表都是對應目錄下的一個或多個文件。因此,操作系統的大小寫是否敏感決定了數據庫大小寫是否敏感。而在Windows中是對大小寫不敏感的(Linux是對大小寫敏感的)。

下圖是在windows操作系統上MySQL中lower_case_table_system和lower_case_table_names的默認值。

 

下圖是在Linux操作系統上MySQL中lower_case_table_system和lower_case_table_names的默認值。

 變量lower_case_file_system說明是否數據目錄所在的文件系統對文件名的大小寫敏感。ON說明文件名的大小寫不敏感,OFF表示敏感。

lower_case_table_names參數說明

當值為0時

使用CREATE TABLE或CREATE DATABASE語句制定的大小寫字母在硬盤上保存表名和數據庫名。名稱比較對大小寫敏感。在大小寫不敏感的操作系統如windows

或Max OS x上我們不能將參數設為0,如果再大小寫不敏感的文件系統上將“lower_case_table_names”強制設置為0,並使用不同的大小寫訪問MyISAM表名,可能會導

致索引破壞。

當值為1時

表名在硬盤上以小寫保存,名稱比較對大小寫不敏感。MySQL將所有表名轉換為小寫存儲和查找表上。該行為也適合數據庫名和表的別名,該值為Windows的默認值。

當值為2時

         表名和數據庫名在硬盤上使用CREATETABLE或CREATE DATABASE語句指定的大小寫字母進行保存,但MySQL將它們轉換為小寫在查找表上。名稱比較對大小寫不

敏感,即按照大小寫來保存,按照小寫來比較。注意:只在對大小寫不敏感的文件系統上適用!innodb表名用小寫保存。

 那么現在問題來了,如何將Linux操作系統上有大小寫的數據庫還原到Windows操作系統上?

1、  將數據庫數據通過mysqldump導出

2、  在my.cnf或my.ini中更改lower_case_table_names=1,並重啟Mysql服務。

3、  將導出的數據導入MySQL數據庫中。

在MySql上為了避免大小寫問題引來的不必要的麻煩,建議都將“lower_case_table_names”設置值為1。我們可以用其他的方式來命名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM