# 1214 - Der verwendete Tabellentyp unterstützt keine FULLTEXT-Indizes

73

Ich erhalte die Fehlermeldung, dass der Tabellentyp keine FULLTEXT-Indizes unterstützt. Wie kann ich das erreichen?

Hier ist mein Tisch:

CREATE TABLE gamemech_chat (
  id bigint(20) unsigned NOT NULL auto_increment,
  from_userid varchar(50) NOT NULL default '0',
  to_userid varchar(50) NOT NULL default '0',
  text text NOT NULL,
  systemtext text NOT NULL,
  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
  chatroom bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY from_userid (from_userid),
  FULLTEXT KEY from_userid_2 (from_userid),
  KEY chatroom (chatroom),
  KEY timestamp (timestamp)
)  ;

* *

RaGin RAj
quelle

Antworten:

104

Vor MySQL 5.6 wird die Volltextsuche nur mit MyISAM Engine unterstützt.

Ändern Sie daher entweder die Engine für Ihre Tabelle in MyISAM

CREATE TABLE gamemech_chat (
  id bigint(20) unsigned NOT NULL auto_increment,
  from_userid varchar(50) NOT NULL default '0',
  to_userid varchar(50) NOT NULL default '0',
  text text NOT NULL,
  systemtext text NOT NULL,
  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
  chatroom bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY from_userid (from_userid),
  FULLTEXT KEY from_userid_2 (from_userid),
  KEY chatroom (chatroom),
  KEY timestamp (timestamp)
) ENGINE=MyISAM;

Hier ist die SQLFiddle- Demo

oder aktualisieren Sie auf 5.6 und verwenden Sie die InnoDB-Volltextsuche.

peterm
quelle
1
Es stellt sich heraus, dass Mysql --versionich einen älteren MySQL-Dienst ausgeführt habe , obwohl ich die neueste Installation korrekt angezeigt habe. Ich hatte zum ersten Stopp und Deinstallation des alten Mysql Service: superuser.com/a/452264/74576 , dann C:\wamp\bin\mysql\mysql5.6.17\bin>mysqld --install, dann Windows - Startmenü> Suchen> Dienstleistungen> Mysql> Start
Ryan
Ist es in 5.5 verfügbar?
KDawg
@KDawg Es scheint nicht: $ mysql -V mysql Ver 15.1 Distrib 5.5.60-MariaDB für Linux (x86_64) mit readline 5.1 und ich habe den Fehler erhalten (Bugzilla aktualisieren; es ist 5:19 Uhr morgens, ich bin todmüde , habe vor kurzem so viel los und habe nicht mit allem Schritt gehalten) in der Frage (und zu müde, um etwas zu bemerken; es hat ein paar Mal gedauert, den ersten Satz in dieser Antwort zu lesen und auch MySQL-V vorher anzusehen Mir ist das Problem eingefallen, also habe ich die Änderungen rückgängig gemacht und alles ist gut - abzüglich der Tatsache, dass die Version veraltet ist und CentOS. Nun, vielleicht wissen Sie es. Na ja. Antwort: Nein.).
Pryftan
@KDawg Ich sollte sagen, InnoDB unterstützt FULLTEXT in 5.5 nicht.
Pryftan
19

Das Problem trat aufgrund eines falschen Tabellentyps auf. MyISAM ist der einzige Tabellentyp, den MySQL für Volltextindizes unterstützt.

Um diesen Fehler zu beheben, führen Sie folgendes SQL aus.

 CREATE TABLE gamemech_chat (
  id bigint(20) unsigned NOT NULL auto_increment,
  from_userid varchar(50) NOT NULL default '0',
  to_userid varchar(50) NOT NULL default '0',
  text text NOT NULL,
  systemtext text NOT NULL,
  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
  chatroom bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY from_userid (from_userid),
  FULLTEXT KEY from_userid_2 (from_userid),
  KEY chatroom (chatroom),
  KEY timestamp (timestamp)
) ENGINE=MyISAM;
Nagaraj S.
quelle
9

Nur MyISAM erlaubt FULLTEXT, wie hier gezeigt .

Versuche dies:

CREATE TABLE gamemech_chat (
  id bigint(20) unsigned NOT NULL auto_increment,
  from_userid varchar(50) NOT NULL default '0',
  to_userid varchar(50) NOT NULL default '0',
  text text NOT NULL,
  systemtext text NOT NULL,
  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
  chatroom bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY from_userid (from_userid),
  FULLTEXT KEY from_userid_2 (from_userid),
  KEY chatroom (chatroom),
  KEY timestamp (timestamp)
) ENGINE=MyISAM;
LoganEtherton
quelle
1

Aus offizieller Referenz

Volltextindizes können nur mit MyISAM-Tabellen verwendet werden. (In MySQL 5.6 und höher können sie auch mit InnoDB-Tabellen verwendet werden.) Volltextindizes können nur für CHAR-, VARCHAR- oder TEXT-Spalten erstellt werden.

https://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

InnoDB mit MySQL 5.5 unterstützt keine Volltextindizes.

nobuhiroharada
quelle
-1

Gehen Sie einfach wie folgt vor:

  1. Öffnen Sie Ihre .sql-Datei mit Notepad oder Notepad ++

  2. Finden Sie InnoDB und ersetzen Sie alle (ca. 87) durch MyISAM

  3. Speichern und jetzt können Sie Ihre Datenbank ohne Fehler importieren.

Tilahun Mamuye Gidey
quelle
-5

************* Gelöst - # 1214 - Der verwendete Tabellentyp unterstützt keine FULLTEXT-Indizes ***************

Es ist sehr einfach, dieses Problem zu beheben. Die Leute antworten hier mit sehr schwierigen Worten, die für die nicht technischen Leute nicht leicht verständlich sind.

Ich erwähne hier Schritte in sehr einfachen Worten, um Ihr Problem zu lösen.

1.) Öffnen Sie Ihre .sql-Datei mit Notepad, indem Sie mit der rechten Maustaste auf Datei> Bearbeiten klicken oder einfach eine Notepad-Datei öffnen und die Datei per Drag & Drop auf Notepad ziehen. Die Datei wird dann geöffnet. (Hinweis: Bitte ändern Sie die Erweiterungs-SQL-Datei nicht, da sie immer noch Ihre SQL-Datenbank ist. Bewahren Sie außerdem eine Kopie Ihrer SQL-Datei auf, um sich vor Unfällen zu schützen.)

2.) Klicken Sie auf Notepad-Menü Bearbeiten> Ersetzen (Ein Fenster öffnet sich mit Suchen nach & Ersetzen durch Felder)

3.) Geben Sie in Find What Field ENGINE = InnoDB & In Replace With Field ENGINE = MyISAM ein

4.) Klicken Sie nun auf Alle ersetzen Knopf

5.) Klicken Sie auf STRG + S oder Datei> Speichern

6.) Laden Sie jetzt diese Datei hoch und ich bin sicher, dass Ihr Problem behoben ist ....

Chandan Kumar
quelle
Dies ist eine Alternative, keine Lösung
Machado
Sie mögen also keine Fremdschlüssel?
Ilpelle
1
@ADTC Danke für das brillante Lachen! Du bist auch absolut richtig. Ich würde hinzufügen, dass Programmierer keine GUIs benötigen, aber ich bin ein starker Befehlszeilenbenutzer (und benutze auch kein Windows) ... Ich würde auch hinzufügen, dass Programmierer auch nicht lernen müssen, wie man eine Datei hochlädt wenn sie es sogar lokal bearbeiten (und nicht auf dem betreffenden Server, z. B. in einer Staging-Umgebung).
Pryftan