2016-03-31 17 views
1

Ich verwendete erfolgreich unter Abfrage in früherer Version von Wamp Server (2.5), bis zu Version 3.0 aktualisiert.MYSQL-Volltextindex existiert aber zeigt Fehler 1191

Diese Abfrage funktioniert auf dem tatsächlichen Server einwandfrei, wird jedoch auf dem lokalen Server fehlgeschlagen. Ich dachte, dass etwas mit Tabellen falsch ist, folglich importierte alle tatsächlichen Servertabellen zum lokalen Server aber noch nicht arbeiten.

Ich bin mir sehr sicher, dass alle Indizes existieren & Alle Tabellen verwenden MyISAM Engine.

Indexes Liste:

1) uk.Keyword_Name in e_pj_keywords uk Tabelle

2) a.company_name & a.company_type in post_jobs eine Tabelle

3) an Orten j.location_name j Tabelle

Ich habe bereits Referenz auf alle Fragen von stackoverflow & google verwendet, um diesen Fehler zu lösen, konnte aber nicht.

Auch KEYS für alle verwandten Tabellen aktiviert, aber nichts hat funktioniert.

Can't find FULLTEXT index matching the column list 

Ich weiß, dass es einen sehr kleinen Fehler geben wird, aber nicht in der Lage, es zu fangen. Bitte helfen.

unter meiner Anfrage ist

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 

anzeigen erstellen für relevante Tabellen

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

zeigen das 'show create' für die entsprechenden Tabellen und beachten Sie, dass' fulltext' Indizes sind nicht das gleiche wie ein regelmäßiger Index/Schlüssel. Sie müssen explizit einen Volltextindex angeben. –

+0

Hallo Marc, habe Show Create für alle relevanten Tabellen bearbeitet. –

Antwort

0

diese Tabelle Beschreibungen gegeben, das ist Ihr Problem:

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

Sie don t Haben Sie einen einzelnen FULLTEXT Index, der diese beiden Felder enthält. MySQL kombiniert nicht zwei separate Volltextindizes für die Abfrage - wenn Sie ein Mehrfachfeld match machen, dann muss es einen SINGLE-Volltextindex geben, der beide Felder im gleichen Index enthält.

Sie müssten die Übereinstimmung für jeden Index aufteilen oder einen neuen Index erstellen, der beide Felder enthält, z.

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

oder

FULLTEXT KEY `foo` (company_name, designation) 
+0

@Mark, ich habe die erste Option getestet, zeige aber immer noch einen ähnlichen Fehler. Außerdem habe ich versucht, mehrere Volltextsuche von Firmennamen & Bezeichnung (nur Stichwort Volltext verwendet) zu entfernen, aber es hat auch nicht funktioniert. überraschend funktioniert es gut auf Live-Server ohne Fehler. Ich vermute, dass es eine Funktion mit wampserver 3 gibt, die ich vermisse, obwohl ich sie nach der Installation aller verteilbaren Frameworks erfolgreich installiert habe. Weiß nicht ... aber es stört mich.Die letzte Option würde zurück zu wamp Server 2.5 gehen. Übrigens, ich benutze Window 10 –

+0

Schließlich war Wamp Server 3.0 Erfahrung ziemlich bitter in Bezug auf Mysql-Abfragen. Ich habe es deinstalliert und Version 2.5 neu installiert. Überraschenderweise hat die gleiche Abfrage wieder funktioniert. Wahrscheinlich logge ich diesen Fehler mit Wamp Server 3 Forum ein und verweise auf diese Frage. Danke @Mark für deine Hilfe. –

Verwandte Themen