2011-10-06 62 views
3

快速問題,因爲我從來沒有遇到過這個。MySQL - 拒絕運行集名稱?

在一個虛擬主機提供商,我運行查詢:

SET NAMES 'utf8'

這是返回以下錯誤:

Error: Unknown system variable 'NAMES'

我還沒有碰到過這之前運行。當試圖指定CURRENT_TIMESTAMP作爲默認列值並設置表格的排序規則時,我會遇到類似的錯誤。

我正在運行的MySQL查詢已經在此之前的數百個主機帳戶上工作過。在與主持人聯繫時,我很害怕說這可能是我的代碼。

這可能是一個狡猾的MySQL安裝?主機說他們正在運行MySQL5

+7

你可以通過發出'SELECT VERSION()'查詢來檢查mysql版本嗎? – a1ex07

+1

從3.23開始,'SET NAMES'已經在MySQL的每個版本中。所以這很難成爲問題,請參閱:http://dev.mysql.com/doc/refman/4.1/en/charset-connection.html – Johan

+0

這似乎是連接驅動程序的問題。你怎麼連接?如果您使用ODBC,例如您可能會遇到這種麻煩。 – wisefish

回答

0

SET NAMES自MySQL 4.1起可用,它爲字符集處理和完整的UTF-8支持帶來了大規模的變化。很確定你有一個MySQL版本< 4.1在你面前。試試

SELECT VERSION(); 

as a1ex07 has recommended。

老版本的MySQL只能處理8位字符數據。他們仍然可以將UTF-8數據存儲爲字節序列,但他們沒有意識到這一點。在MySQL < 4.1中存儲了多個用於存儲UTF-8的撤銷。例如,字符串長度可以超過給定的列限制,但字符數量應該適合。現代字符串比較函數也不存在(它們正確地比較特殊字符和不同的寫法,即德語中的「ß」與「ss」)。