CREATE TABLE `NAME` (`name` VARCHAR(10));
SELECT * FROM `NAME` WHERE `name` = 'clip';
SELECT * FROM `NAME` WHERE `name` = 'Clip'; -- 結果相同
CREATE TABLE `NAME` (
`name` VARCHAR(10) BINARY
);
SELECT * FROM `NAME` WHERE BINARY `name` = 'Clip';
utf8_general_ci(預設):不區分大小寫(ci = case insensitive)utf8_bin:區分大小寫(二進位比對)| 項目 | Windows | Linux |
|---|---|---|
| 資料庫名 | 不區分 | 區分 |
| 表名 | 不區分 | 區分 |
| 欄位名 | 不區分 | 不區分 |
| 表別名 | 不區分 | 區分 |
| 欄位別名 | 不區分 | 不區分 |
| 變數名 | 不區分 | 區分 |
Windows 開發時表名自動轉小寫,遷移至 Linux 後因大小寫敏感導致找不到表。
lower_case_table_names[mysqld]
lower_case_table_names = 0 # 0=區分大小寫, 1=不區分(預設 Windows), 2=儲存原大小寫但比對不區分
0(區分大小寫),避免遷移驚喜my.ini,Linux 下修改 my.cnfuser_profile)CHARSET utf8mb4 COLLATE utf8mb4_bin 需區分大小寫的欄位lower_case_table_names 設定` 包裹