這二天同事遇到了MySQL吐出這樣的錯誤訊息
是什麼原因造成這樣的錯誤呢?
仔細閱讀MySQL官方文件中的字元集章節
就可以知道錯誤的來源
一般我們操作MySQL使用的編碼大都是big5或utf-8
所以建資料庫和連線資料庫的時候都採用big5或utf-8
當全程指定big5或utf-8作編碼時
則上面的錯誤訊息就不會產生
如果在資料庫連線時沒有指定編碼
則MySQL就會使用預設值的字元集來處理此次的連線請求
如果MySQL的設定檔沒有更動過設定值
MySQL會採取latin1字元集作為預設
並且使用 latin1_swedish_ci 作為處理規則
latin1_swedish_ci 處理規則使用單字節來作比較、排序
當傳入的SQL指令中含有雙字節的中文字時
就會產生上面的錯誤訊息
解決這種錯誤的方法很簡單
只要重新指定編碼即可
SET NAMES 'big5' 或者 SET NAMES 'utf8'
沒有留言:
張貼留言