程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 庫名表名大小寫問題與sqlserver兼容的啟動配置方法

庫名表名大小寫問題與sqlserver兼容的啟動配置方法

編輯:關於MYSQL數據庫
將全局變量 lower_case_table_names 設置為1

實驗:
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之前, 必須先將舊的數據庫名和表名轉換為小寫,否則設置後,將找不到以前的表。
(上面的實驗中,MyTable表在lower_case_tables_name=1時已經找不到了)
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved