2010-03-17 21 views
2

試圖解決這個現在很長一段時間......MySQL的對陣russain

SELECT MATCH(name) AGAINST('абраксас') 

(俄羅斯)不工作,但

SELECT MATCH(name) AGAINST('abraxas') 

(英文)的工作完美。
我知道這是與字符集,但我嘗試了所有類型的設置,它不起作用。
現在它是拉丁語-1。
類工程
這是show variables字符集相關:

/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; 
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */; 
/*!40101 SET @[email protected]@COLLATION_CONNECTION */; 
/*!40101 SET NAMES utf8 */; 
DROP TABLE IF EXISTS `scenes_raw`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `scenes_raw` (
`scene_name` varchar(40) DEFAULT NULL, 
...blabla... 
) ENGINE=MyISAM AUTO_INCREMENT=901 DEFAULT CHARSET=utf8; 

(我所做的:

character_set_client - latin1 
character_set_connection - latin1 
character_set_database - latin1 
character_set_filesystem - binary 
character_set_results - latin1 
character_set_server - latin1 
character_set_system - utf8 
character_sets_dir - /usr/share/mysql/charsets/ 
collation_connection - latin1_swedish_ci 
collation_database - latin1_swedish_ci 
collation_server - latin1_swedish_ci 

轉儲的/etc/my.cnf

default-character-set=latin1 
skip-character-set-client-handshake 

塊的塊沒有跳過字符集客戶端握手的測試)

SHOW TABLE STATUS WHERE Name = 'scenes_raw'\G 
Name: scenes_raw 
Engine: MyISAM 
Version: 10 
Row_format: Dynamic 
Index_length: 23552 
Collation: utf8_general_ci 
Checksum: NULL 
Create_options: 
+0

是否可以發佈顯示相關零件的轉儲的小片段? – Sasha 2010-03-21 18:47:02

+0

是的,在問題的主體中完成。 – Devenv 2010-03-21 20:25:14

+1

以UTF-8編碼的希伯來語字符串'ססקרבא'?例如如果腳本從文件運行 - 文件應該是UTF-8編碼的。 – Dor 2010-03-21 20:44:15

回答

3

嘗試將您的character_set_client設置爲UTF-8。我只是嘗試了一下:

> mysql -u root -p charset_test --default-character-set=latin1 
mysql> select * from scenes_raw where MATCH(scene_name) AGAINST('абраксас'); 
Empty set (0.00 sec) 

> mysql -u root -p charset_test --default-character-set=utf8 
mysql> select * from scenes_raw where MATCH(scene_name) AGAINST('абраксас'); 
+------------------+ 
| scene_name  | 
+------------------+ 
| абраксас   | 
+------------------+ 
1 row in set (0.00 sec) 

編輯:欲瞭解更多詳情,請參閱this explanation.的「character_set_client字符」從你的「SHOW變量」輸出的字符集的MySQL客戶端用來發送到服務器。當它在Latin-1中時,它不支持西里爾語,但是當它是UTF-8時,它應該可以正常工作。

+0

好吧,我有默認字符 - 在my.cnf中set = latin1和skip-character-set-client-handshake,這當然不好,但現在我有一個問題,當我使用charset = utf8時,dump中的文本是亂碼,而且就我而言記住把它轉換爲utf全部都是很痛苦的nce :(無賴,感謝您的幫助,雖然它不是最終的解決方案,但它有助於找到問題的根源...... – Devenv 2010-03-22 11:49:06

+0

奇怪的是,在轉儲文件中似乎是utf8,所有排序規則等都是utf8。 ..但文字本身就是拉丁文,非常困惑:/ – Devenv 2010-03-22 11:51:01

+0

哥們,你是上帝!我一直在尋找解決方案多年:) – dimaninc 2013-07-01 04:02:42

0

嘗試撥打設置名稱'utf8'一旦您打開到服務器的連接。

+0

nope,它會擾亂結果的編碼,並且得分仍然爲0 :( – Devenv 2010-03-18 14:18:22

+0

是你確保你的數據(在數據庫和查詢上)實際上是在utf8? – 2010-03-18 15:05:55

+0

好吧,在轉儲它顯示DEFAULT CHARSET = utf8和喜作品...所以我想這是:) – Devenv 2010-03-18 15:26:28