MySQL存儲過程的字符集問題
MySQL存儲是MySQL數(shù)據(jù)庫操作中非常重要的一個工作,也是大家平時工作中都要應(yīng)用到的。由于存儲過程中定義參數(shù)時,無法定義其字符集,因此調(diào)用存儲過程的時候,會默認讀取全局變量character_set_server,而且還是只讀取mysqld啟動時該全局變量的值作為存儲過程中默認的傳輸字符集。因此,如果數(shù)據(jù)表/字段使用系統(tǒng)默認的字符集(比如latin1)的話,調(diào)用存儲過程更新一些非英文的字符串字段時,就不會發(fā)生問題;但是,如果數(shù)據(jù)表/字段的字符集不是系統(tǒng)默認的字符集(比如默認是latin1,數(shù)據(jù)表使用的是utf8),就會出現(xiàn)問題了。
解決辦法:
在my.cnf(windows下是my.ini),增加一行:
default-character-set=utf8
或者
character-set-server=utf8
也可以。如果只是在mysqld啟動之后,在 mysql 命令行中用 SET 語法來更新的話則不起作用。