2019/07/17

眼前的黑不是黑,你說的 I 是哪個 i

[蕭煌奇的經典歌曲]

基於這個案例實在太經典了
除了前公司,現在的公司也有遇到過
本來想請前公司的同事幫忙
把我在內部分享的文章轉寄給我,然後重貼在這裡
但是據說該 forum 已經暫停服務
所以乾脆重新再寫一次吧

一個土耳其客戶回報某個功能失效


記得從 log 檔分析
是類似找不到某個 database table 的錯誤
研究了半天發現是大小寫不一致造成的
假設有一張 table 名字叫作 CustomerInfo
在建立 database 時寫成全小寫的 customerinfo
但是在程式裡面使用 SQL statement 時是寫成 CustomerInfo
在英文語系的時候很正常
可是在土耳其語系的時候就不行了
原因是土耳其語有兩個意料之外的字母

大寫字母 小寫字母
Iı
İi

所以 CustomerInfo 與 customerinfo 是不一樣的字母組成

其實字母數都不一樣的匈牙利語


又有一次遇到了類似的問題
也是找不到某個 database table 的錯誤
這次大腦的迴路就響起了警鈴
難道又是跟大小寫有關
假設有個 table 叫做 BasicSet
一樣建立的時候用全小寫
使用的時候寫成了 camel case
原因是匈牙利語中有特殊的字母

大寫字母 小寫字母
Cscs
Dzdz

所以 B-a-s-i-c-S-e-t 跟 b-a-s-i-cs-e-t 根本連字母數都不一樣

結論


就是大小寫使用的時候一定要一致
Windows 不是 case sensitive 的環境
所以導致測試的時候可能會忽略了這一點
這次公司遇到的就與 database 無關
而是在執行指令的時候踩到了這個雷

參考
土耳其语 - Wikipedia
匈牙利语 - Wikipedia