後端開發,會時不時地和資料庫打交道,mysql 資料庫作為開源資料庫,市場占有率相當高,很有研究和學習的價值。
在之前的部落格中也提到了 mysql 資料庫的一些常用的操作和介紹,在這裡聊一聊資料庫大小寫的問題。mysql 開發過程中有可能會新增外來鍵,遇到問題不妨先看看字段大小寫是否匹配。
mysql在linux下資料庫名、表名、列名、別名大小寫規則是這樣的:
1、資料庫名與表名是嚴格區分大小寫的;mysql在windows下都不區分大小寫。2、表的別名是嚴格區分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變數名也是嚴格區分大小寫的。
所以在不同作業系統中為了能使程式和資料庫都能正常執行,最好的辦法是在設計的時候都轉為小寫,但是如果在設計的時候已經規範化大小寫了,那麼在 windows 環境下只要對資料庫的配置做下改動就行了,具體操作如下:
在mysql的配置檔案中 my.ini [mysqld] 中增加一行
lower_case_table_names = 1
引數解釋:
建立 usertable:
create table `usertable`(
`id` varchar(32) binary,
primary key (`id`)
) engine=innodb default charset=utf8;
建立 mytable 並使用外來鍵:
create table `mytable`(
`id` varchar(32) binary,
`uid` varchar(32) binary,
primary key (`id`),
constraint `user_1` foreign key (`uid`) references `usertable` (`id`) on delete set null on update cascade
) engine=innodb default charset=utf8;
如果在 mytable 表中,外來鍵關聯的時候 usertable 錯誤寫成 「usertable」 或者其它形式,則會關聯失敗。
由上可以看出大小寫對 mysql 有很大的影響。開發過程中,應該盡量按大小寫敏感的原則去開發。
開發過程中可以把lower_case_table_names
的值設為 0,便於控制**大小寫敏感,提高**的相容性和嚴謹性。
Mysql資料庫大小寫問題
select from user where name aaa select from user where name aaa 以上兩條sql執行結果是一樣的。以上兩條sql語句的執行結果是一樣的,發現mysql有時是不區分大小寫的。如何區分大小寫以下是三種方式,本人親測 1 建庫的時候排序規則選擇...
MySql資料庫大小寫敏感問題
在mysql中,資料庫對應資料目錄中的目錄。資料庫中的每個表至少對應資料庫目錄中的乙個檔案 也可能是多個,取決於儲存引擎 因此,所使用作業系統的大小寫敏感性決定了資料庫名和表名的大小寫敏感性。這說明在大多數unix中資料庫名和表名對大小寫敏感,而在windows中對大小寫不敏感。乙個顯著的例外情況是...
mysql 資料庫表名大小寫問題
lower case table names 1 原來linux下的mysql預設是區分表名大小寫的,通過如下設定,可以讓mysql不區分表名大小寫 1 用root登入,修改 usr my.cnf 2 在 mysqld 節點下,加入一行 lower case table names 1 3 重啟my...