2016-03-31 3 views
1

バージョン3.0にアップグレードするまで、以前のバージョンのWamp Server(2.5)で以下のクエリを正常に使用しました。MYSQLフルテキストインデックスが存在しますが、エラーが表示されます1191

このクエリは実際のサーバーで正常に動作しますが、ローカルサーバーでは失敗します。私はテーブルで何か間違っているかもしれないと思ったので、すべての実際のサーバーテーブルをローカルサーバーにインポートしましたが、まだ動作しません。

すべてのインデックスが存在することを非常に確信しています。&すべてのテーブルがMyISAMエンジンを使用しています。

インデックスリスト:

1)uk.Keyword_Name e_pj_keywords英国テーブル内

2)post_jobsでa.company_name & a.company_typeテーブル

3)場所でj.location_name jテーブル

私はすでにこのエラーを解決するためにgoogleのstackoverflow &すべての質問への参照を使用していますができませんでした。

関連するすべてのテーブルでKEYSも有効になりましたが、何も機能しませんでした。

Can't find FULLTEXT index matching the column list 

非常に小さなエラーがありますが、それをキャッチすることはできません。 plsヘルプ。以下

私のクエリ

SELECT SQL_CALC_FOUND_ROWS 
* 
FROM 
(SELECT 
    a.job_id, 
     a.Employer_ID, 
     a.Sub_user_id, 
     DATE_FORMAT(a.creation_on, '%d-%m-%Y') AS Created_date, 
     DATEDIFF(CURDATE(), MAX(a.creation_on)) AS Posted_days, 
     a.Job_type, 
     a.Designation, 
     a.Open_Positions, 
     a.Job_Description, 
     a.Min_age, 
     a.Max_age, 
     a.min_exp, 
     a.max_exp, 
     a.Hide_Salary, 
     a.company_name, 
     a.company_type, 
     a.About_Company, 
     a.Contact_person_name, 
     a.Contact_No, 
     a.Refresh_type, 
     a.Response_type, 
     a.Job_status, 
     DATEDIFF(CURDATE(), MAX(a.creation_on)) AS Days_last_Login, 
     (SELECT GROUP_CONCAT(DISTINCT g.Education ORDER BY pjedu.Education_ID SEPARATOR ', ') user_education 
      FROM e_pj_edu pjedu INNER JOIN education g ON FIND_IN_SET(g.Edu_ID, pjedu.Education_ID) 
      WHERE a.job_id = pjedu.Job_ID LIMIT 1 
     ) AS Education, 
     (SELECT GROUP_CONCAT(DISTINCT h.FA_description ORDER BY uf.FA_ID SEPARATOR ', ') FA 
      FROM e_pj_fa uf INNER JOIN functional_area h ON FIND_IN_SET(h.FA_ID, uf.FA_ID) 
      WHERE a.Job_ID = uf.Job_ID LIMIT 1 
     ) AS FA_description, 
     (SELECT GROUP_CONCAT(DISTINCT i.Industry_description ORDER BY ui.Industry_ID SEPARATOR ', ') Industry_ID 
      FROM e_pj_industry ui INNER JOIN industry i ON FIND_IN_SET(i.Industry_ID, ui.Industry_ID) 
      WHERE a.Job_ID = ui.Job_ID LIMIT 1 
     ) AS Industry_description, 
     (SELECT GROUP_CONCAT(DISTINCT j.location_name ORDER BY upl.Location_ID SEPARATOR ', ') Location_ID 
      FROM e_pj_locations upl INNER JOIN locations j ON FIND_IN_SET(j.location_id, upl.Location_ID) 
      WHERE a.Job_ID = upl.Job_ID LIMIT 1 
     ) AS location_name, 
     (SELECT GROUP_CONCAT(DISTINCT uk.Keyword_Name ORDER BY uk.Keyword_ID SEPARATOR ', ') keyskills 
      FROM e_pj_keywords uk WHERE a.Job_ID = uk.Job_ID LIMIT 1 
     ) AS Keyword_Name, 
     GROUP_CONCAT(DISTINCT cc.salary_description ORDER BY cc.salary_ID SEPARATOR ', ') Min_salary, 
     GROUP_CONCAT(DISTINCT dd.salary_description ORDER BY dd.salary_ID SEPARATOR ', ') Max_salary 
FROM 
    post_jobs a 
INNER JOIN user_salary cc ON FIND_IN_SET(cc.salary_ID, a.Min_salary) 
INNER JOIN user_salary dd ON FIND_IN_SET(dd.salary_ID, a.Max_salary) 
GROUP BY a.Job_id) aa 
WHERE 
MATCH (Keyword_Name) AGAINST ('"operation","mis","facility","sales"' IN BOOLEAN MODE) 
OR MATCH (company_name, Designation) AGAINST ('"operation","mis","facility","sales"' IN BOOLEAN MODE) 
AND max_exp <= 11 
AND MATCH (location_name) AGAINST ('"delhi","mumbai","navi,mumbai"' IN BOOLEAN MODE) 
AND Job_status = 'Active' 
ORDER BY aa.Created_date DESC 
LIMIT 0 , 25 

ショーは、これらのテーブルの記述を考えると、関連するテーブル

e_pj_keywords CREATE TABLE `e_pj_keywords` (
`Keyword_ID` bigint(18) NOT NULL AUTO_INCREMENT, 
`Job_ID` int(10) NOT NULL, 
`Keyword_Name` varchar(100) NOT NULL, 
PRIMARY KEY (`Keyword_ID`), 
KEY `Job_ID` (`Job_ID`), 
FULLTEXT KEY `Keyword_Name` (`Keyword_Name`) 
) ENGINE=MyISAM AUTO_INCREMENT=1404 DEFAULT CHARSET=latin1 


post_jobs CREATE TABLE `post_jobs` (
`Job_id` int(10) NOT NULL AUTO_INCREMENT, 
`Designation` text, 
`Company_Name` varchar(1000) NOT NULL, 
`company_type` varchar(100) DEFAULT NULL, 
PRIMARY KEY (`Job_id`), 
FULLTEXT KEY `Company_Name` (`Company_Name`), 
FULLTEXT KEY `Designation` (`Designation`) 
) ENGINE=MyISAM AUTO_INCREMENT=176 DEFAULT CHARSET=latin1  


locations CREATE TABLE `locations` (
`location_id` int(10) NOT NULL, 
`location_name` varchar(100) NOT NULL, 
`Nation` varchar(50) DEFAULT NULL, 
PRIMARY KEY (`location_id`), 
FULLTEXT KEY `location_name` (`location_name`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 
+0

関連のテーブルの 'ショーcreate'を示し、' fulltext'インデックスは定期的にインデックス/キーと同じではないことに注意してください。フルテキストインデックスを明示的に指定する必要があります。 –

+0

こんにちはMarcさん、関連するすべてのテーブルのShow Createを編集しました。 –

答えて

0

のために作成され、これはあなたの問題である:

OR MATCH (company_name, Designation) AGAINST 
      ^^^^^^^^^^^^^^^^^^^^ 

あなたドン〜しないこれらのフィールドの両方を含む単一のFULLTEXTインデックスを持ちます。 MySQLはクエリ用に2つの別個のフルテキストインデックスを結合しません。マルチフィールドmatchを実行している場合、両方のフィールドを同じインデックスに含む単一フルテキストインデックスが必要です。

インデックスごとに一致を分割するか、両方のフィールドを含む新しいインデックスを作成する必要があります(例:

... MATCH 'foo' AGAINST (company_name) OR MATCH 'foo' AGAINST (desgination) 

または

​​
+0

@マーク、私は最初のオプションをテストしましたが、それでも似たようなエラーが表示されます。また、私は会社名と指定(キーワードフルテキストのみ使用)の複数の全文検索を削除してみましたが、どちらもうまくいきませんでした。驚くべきことに、生きているサーバーで何のエラーもなく正常に動作しています。私はwampserver 3といくつかの機能があると推測していますが、それはすべての再配布可能なフレームワークのインストールをポストしてインストールしましたが、私は行方不明です。知らない...しかし、それは私を悩ませている。最後のオプションはServer 2.5に戻ってしまうでしょう。ところで、私はWindow 10を使っています –

+0

最後に、Wamp Server 3.0の経験は、MySQLのクエリの点では非常に苦いです。アンインストールしてバージョン2.5を再インストールしましたが、驚くほど同じクエリが再び動作するようになりました。おそらく、この質問を参照して、Wampサーバー3フォーラムでこのバグを記録しています。ありがとう@あなたのお手伝いをしてください。 –

関連する問題