我在2台Mac笔记本电脑上安装了mysql社区5.6.13 - 一台使用os x 10.8,另一台使用os x 10.9.
据我所知,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 ('lawyer@domain.com.au' IN BOOLEAN MODE)
OR user_account.username like '%lawyer@domain.com.au%'
OR legal_matter.display_name like '%lawyer@domain.com.au%'
OR client_account.company_name like '%lawyer@domain.com.au%'
Run Code Online (Sandbox Code Playgroud)
在10.8的笔记本电脑上,查询正常执行,在10.9的笔记本电脑上,查询抱怨:
Error Code: 1064. syntax error, unexpected '@', expecting $end
Run Code Online (Sandbox Code Playgroud)
TI不知道它是否与不同的操作系统版本有任何关系,我怀疑没有,但我不知道问题是什么.
任何指针都感激不尽.
谢谢.
我有使用匹配电子邮件的查询,当我切换到 innodb 时开始失败,因为 @ 用于在 InnoDB 中搜索相距一定距离的单词:
SELECT username FROM users WHERE MATCH(user_email) AGAINST('test@user.com' IN BOOLEAN MODE);
ERROR 1064 (42000): syntax error, unexpected '@', expecting $end
SELECT username FROM users WHERE MATCH(user_email) AGAINST("test@user.com" IN BOOLEAN MODE);
ERROR 1064 (42000): syntax error, unexpected '@', expecting $end
mysql>
Run Code Online (Sandbox Code Playgroud)
尝试像这样包装您的电子邮件地址:
SELECT username FROM users WHERE MATCH(user_email) AGAINST('"test@user.com"' IN BOOLEAN MODE);
Run Code Online (Sandbox Code Playgroud)
或逃脱:
SELECT username FROM users WHERE MATCH(user_email) AGAINST('\"test@user.com\"' IN BOOLEAN MODE);
Run Code Online (Sandbox Code Playgroud)
Up_*_*One -1
尝试使用以下语法:
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 ('+lawyer@domain.com.au' IN BOOLEAN MODE)
OR user_account.username like '%lawyer@domain.com.au%'
OR legal_matter.display_name like '%lawyer@domain.com.au%'
OR client_account.company_name like '%lawyer@domain.com.au%'
Run Code Online (Sandbox Code Playgroud)