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

來源:互聯網
上載者:User

將全域變數 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時已經找不到了)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.