萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Linux mysql表名區分大小寫設置與實驗測試

Linux mysql表名區分大小寫設置與實驗測試

修改mysql教程 server安裝目錄下的 my.ini 文件,在mysqld節下加入下面一行 set-variable=lower_case_table_names=0 (0:大小寫敏感;1:大小寫不敏感)最後重啟一下mysql服務即可。


1.lower_case_tables_name=0的情況(linux默認)
直接啟動mysql教程,在mytest庫中新建表mytable和mytable

mysql> use mytest;
mysql> create table mytable(id int not null,name varchar(10),dt date);
mysql> create table mytable(id int not null,name varchar(10),dt date);
mysql> show tables;
+------------------+
| tables_in_mytest |
+------------------+
| mytable |
| mytable |

+------------------+
默認情況下,可以同時創建mytable和mytable兩個表

2.lower_case_tables_name=1的情況(我們需要設置成這種情況)
進入到etc目錄,編輯my.cnf文件
[root@mysqlserver etc]# vi my.cnf
找到 [mysqld]
在它的全局變量的最後面加入一行:lower_case_table_names = 1
保存,退出,然後重新啟動mysql
[root@mysqlserver etc]# service mysqld restart;
進入到mysql
[root@mysqlserver mysql]# bin/mysql
mysql> use mytest;
mysql> select * from mytable;
mysql> select * from mytable;
兩個查詢的結果一樣,都是查詢mytable表,而mytable表已經找不到了(可以看到,但查詢不到)
我們再試著創建mytable表
mysql> create table mytable(id int not null,name varchar(10),dt date);
error 1050 (42s01): table 'mytable' already exists
將得到表已經存在的提示

同樣,我們可以試著創建mytest庫
mysql> create database mytest;
error 1007 (hy000): can't create database 'mytest'; database exists
也會得到庫已經存在的提示

在這種情況下,表名和庫名都不區分大小寫了。

注意:在unix中將lower_case_tables_name設置為1之前,重啟mysqld之前, 必須先將舊的數據庫教程教程名和表名轉換為小寫,否則設置後,將找不到以前的表

copyright © 萬盛學電腦網 all rights reserved