MySQL 數據目錄 -> 文件系統目錄/文件。
Windows (NTFS, 不區分大小寫) -> 表名不敏感。
Linux/Unix (ext4/xfs, 區分大小寫) -> 表名敏感。
Mac OS X (HFS+ 預設不敏感, UFS 敏感) -> 視卷格式而定。
| 對象 | Windows | Linux | 備註 |
|---|---|---|---|
| 數據庫名 | 不敏感 | 敏感 | 受 lower_case_table_names 影響 |
| 表名 | 不敏感 | 敏感 | 受 lower_case_table_names 影響 |
| 表別名 | 不敏感 | 敏感 | 始終敏感 (SQL 標準) |
| 列名 | 不敏感 | 不敏感 | 始終不敏感 |
| 列別名 | 不敏感 | 不敏感 | 始終不敏感 |
| 變量名 (用戶變量/系統變量) | 不敏感 | 敏感 | 如 @my_var vs @MY_VAR |
| 字符串比較 | 視排序規則 | 視排序規則 | _ci 不敏感,_cs/_bin 敏感 |
| 值 | 存儲 (文件系統) | 比較 (SQL 解析) | 適用/風險 |
|---|---|---|---|
| 0 | 保留原始大小寫 | 敏感 | Linux 默認。Windows 設為 0 會導致文件系統找不到表 (大小寫不匹配) 报錯,除非文件系統支持大小寫敏感 (NTFS 可開啟但極不推薦)。 |
| 1 | 強制轉小寫存儲 | 不敏感 (轉小寫比較) | Windows 默認。Linux 設為 1 可實現跨平台兼容 (表名統一小寫)。修改需重建數據目錄。 |
| 2 | 保留原始大小寫 | 不敏感 (轉小寫比較) | Mac OS X HFS+ 默認。罕用。 |
mysqldump --all-databases --routines --triggers --events > full_backup.sql。systemctl stop mysqld / net stop mysql。my.cnf / my.ini [mysqld] 下設定目標值。mv /var/lib/mysql /var/lib/mysql_bak (或清空內容)。mysqld --initialize-insecure (生成空密碼 root) 或 --initialize。mysql < full_backup.sql (注意:備份文件內的表名大小寫需與新規則兼容,建議備份前統一轉小寫)。強制規範:所有庫、表、列、索引、別名**統一使用小寫字母 + 下劃線** (snake_case)。
例如:user_info, order_detail, created_at。
# Spring Boot application.yml
spring:
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# 隱式策略: spring.jpa.hibernate.naming.implicit-strategy
properties:
hibernate:
globally_quoted_identifiers: false # 不強制加反引號
# 實體類註解精確控制
@Entity
@Table(name = "user_info") -- 顯式指定小寫表名
public class UserInfo { ... }