2014-03-29 74 views
0

我在2臺Mac筆記本電腦上安裝了mysql社區5.6.13 - 其中一臺使用os x 10.8,另一臺使用os x 10.9。MySQL InnoDB包含電子郵件地址的全文搜索

據我所知,mysql的安裝是相同的,但相同的全文搜索在每次安裝時的行爲都不相同。

查詢我的是:

SELECT legal_matter.* FROM legal_matter 
left join user_account 
on user_account.id = legal_matter.lawyer_id 
left join client_account 
on client_account.id = legal_matter.client_account_id 
WHERE MATCH (legal_matter.question) AGAINST ('[email protected]' IN BOOLEAN MODE) 
OR user_account.username like '%[email protected]%' 
OR legal_matter.display_name like '%[email protected]%' 
OR client_account.company_name like '%[email protected]%' 

在筆記本電腦10.8,查詢正常執行,在筆記本電腦10.9,查詢抱怨:

Error Code: 1064. syntax error, unexpected '@', expecting $end 

TI不知道,如果它與不同的操作系統版本有什麼關係,我懷疑不是,但是對於問題是什麼而感到不知所措。

任何指針感激地收到。

謝謝。

+0

我最終恢復到OS X 10.8(山獅),然後重新安裝MySQL已經解決了我的問題。只能把它歸結爲操作系統版本的差異。 – Chappers1975

回答

0

嘗試使用這個語法:

SELECT legal_matter.* FROM legal_matter 
left join user_account 
on user_account.id = legal_matter.lawyer_id 
left join client_account 
on client_account.id = legal_matter.client_account_id 
WHERE MATCH (legal_matter.question) AGAINST ('[email protected]' IN BOOLEAN MODE) 
OR user_account.username like '%[email protected]%' 
OR legal_matter.display_name like '%[email protected]%' 
OR client_account.company_name like '%[email protected]%' 
+0

領先的+沒有任何區別。我還應該指出,上述查詢在MySQL 5.6.13的分段和生產環境中都可以工作。只是不能解決它爲什麼不能在我的一個開發環境中工作 – Chappers1975

0

我有用來對付它開始失敗電子郵件匹配查詢時,我切換到InnoDB的,因爲@被用於搜索詞相隔一定距離的InnoDB的:

SELECT username FROM users WHERE MATCH(user_email) AGAINST('[email protected]' IN BOOLEAN MODE); 
ERROR 1064 (42000): syntax error, unexpected '@', expecting $end 

SELECT username FROM users WHERE MATCH(user_email) AGAINST("[email protected]" IN BOOLEAN MODE); 
ERROR 1064 (42000): syntax error, unexpected '@', expecting $end 
mysql> 

嘗試包裝你的電子郵件地址是這樣的:

SELECT username FROM users WHERE MATCH(user_email) AGAINST('"[email protected]"' IN BOOLEAN MODE); 

或轉義:

SELECT username FROM users WHERE MATCH(user_email) AGAINST('\"[email protected]\"' IN BOOLEAN MODE);