庫名表名大小寫問題與sqlserver兼容的啟動(dòng)配置方法
更新時(shí)間:2010年12月17日 21:38:15 作者:
庫名表名大小寫問題與sqlserver兼容的啟動(dòng)配置方法,需要的朋友可以參考下。
將全局變量 lower_case_table_names 設(shè)置為1
實(shí)驗(yàn):
1.lower_case_tables_name=0的情況(Linux默認(rèn))
直接啟動(dòng)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 |
+------------------+
默認(rèn)情況下,可以同時(shí)創(chuàng)建mytable和MyTable兩個(gè)表
2.lower_case_tables_name=1的情況(我們需要設(shè)置成這種情況)
進(jìn)入到etc目錄,編輯my.cnf文件
[root@MYSQLServer etc]# vi my.cnf
找到 [mysqld]
在它的全局變量的最后面加入一行:lower_case_table_names = 1
保存,退出,然后重新啟動(dòng)mysql
[root@MYSQLServer etc]# service mysqld restart;
進(jìn)入到mysql
[root@MYSQLServer mysql]# bin/mysql
mysql> use mytest;
mysql> select * from MyTable;
mysql> select * from mytable;
兩個(gè)查詢的結(jié)果一樣,都是查詢mytable表,而MyTable表已經(jīng)找不到了(可以看到,但查詢不到)
我們再試著創(chuàng)建MyTable表
mysql> create table MyTable(id int not null,name varchar(10),dt date);
ERROR 1050 (42S01): Table 'mytable' already exists
將得到表已經(jīng)存在的提示
同樣,我們可以試著創(chuàng)建MyTest庫
mysql> create database MyTest;
ERROR 1007 (HY000): Can't create database 'mytest'; database exists
也會(huì)得到庫已經(jīng)存在的提示
在這種情況下,表名和庫名都不區(qū)分大小寫了。
注意:在Unix中將lower_case_tables_name設(shè)置為1之前,重啟mysqld之前, 必須先將舊的數(shù)據(jù)庫名和表名轉(zhuǎn)換為小寫,否則設(shè)置后,將找不到以前的表。
(上面的實(shí)驗(yàn)中,MyTable表在lower_case_tables_name=1時(shí)已經(jīng)找不到了)
實(shí)驗(yàn):
1.lower_case_tables_name=0的情況(Linux默認(rèn))
直接啟動(dòng)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 |
+------------------+
默認(rèn)情況下,可以同時(shí)創(chuàng)建mytable和MyTable兩個(gè)表
2.lower_case_tables_name=1的情況(我們需要設(shè)置成這種情況)
進(jìn)入到etc目錄,編輯my.cnf文件
[root@MYSQLServer etc]# vi my.cnf
找到 [mysqld]
在它的全局變量的最后面加入一行:lower_case_table_names = 1
保存,退出,然后重新啟動(dòng)mysql
[root@MYSQLServer etc]# service mysqld restart;
進(jìn)入到mysql
[root@MYSQLServer mysql]# bin/mysql
mysql> use mytest;
mysql> select * from MyTable;
mysql> select * from mytable;
兩個(gè)查詢的結(jié)果一樣,都是查詢mytable表,而MyTable表已經(jīng)找不到了(可以看到,但查詢不到)
我們再試著創(chuàng)建MyTable表
mysql> create table MyTable(id int not null,name varchar(10),dt date);
ERROR 1050 (42S01): Table 'mytable' already exists
將得到表已經(jīng)存在的提示
同樣,我們可以試著創(chuàng)建MyTest庫
mysql> create database MyTest;
ERROR 1007 (HY000): Can't create database 'mytest'; database exists
也會(huì)得到庫已經(jīng)存在的提示
在這種情況下,表名和庫名都不區(qū)分大小寫了。
注意:在Unix中將lower_case_tables_name設(shè)置為1之前,重啟mysqld之前, 必須先將舊的數(shù)據(jù)庫名和表名轉(zhuǎn)換為小寫,否則設(shè)置后,將找不到以前的表。
(上面的實(shí)驗(yàn)中,MyTable表在lower_case_tables_name=1時(shí)已經(jīng)找不到了)
相關(guān)文章
SQL實(shí)現(xiàn)LeetCode(184.系里最高薪水)
這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(184.系里最高薪水),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
MySQL重置root密碼提示"Unknown column ‘password"的解決方法
這篇文章主要介紹了MySQL重置root密碼提示"Unknown column ‘password"的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
mysql和oracle默認(rèn)排序的方法 - 不指定order by
這篇文章主要介紹了mysql和oracle默認(rèn)排序的方法 - 不指定order by。具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
MySQL left join操作中on和where放置條件的區(qū)別介紹
這篇文章主要給大家介紹了關(guān)于MySQL left join操作中on和where放置條件的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
MySQL數(shù)據(jù)庫遠(yuǎn)程連接開啟方法
有時(shí)候需要遠(yuǎn)程連接mysql數(shù)據(jù)庫,默認(rèn)是不可以的,大家可以參考下面的方法,解決下。2010-08-08
DQL命令查詢數(shù)據(jù)實(shí)現(xiàn)方法詳解
DQL(Data?Query?Language,數(shù)據(jù)查詢語言),查詢數(shù)據(jù)庫數(shù)據(jù),如SELECT語句,簡單的單表查詢或多表的復(fù)雜查詢和嵌套查詢,數(shù)據(jù)庫語言中最核心、最重要的語句,使用頻率最高的語句2022-09-09

