Wie man einen Volltextindex (fulltext) in MySQL entfernt – Wechsel von MyISAM zu InnoDB

Also entschied ich mich, YARPP (das „yet another related posts plugin“ für WordPress) zu deinstallieren und meine wp_posts- Tabelle aus MyISAM wieder in InnoDB zu konvertieren.

Als ich die Konvertierung von MyISAM -> InnoDB durchführen wollte, erhielt ich natürlich einen Fehler von myPhpAdmin:

The used table type doesn’t support FULLTEXT indexes

Nicht unerwartet… Versionen von MySQL < 5.6.4 unterstützen FULLTEXT in InnoDB nicht, daher wusste ich, dass ich die FULLTEXT-Indizes löschen musste, wusste aber nicht so recht, wie. Und es dauerte eine Weile, um die Lösung zu finden. Aber hier ist sie:

1) Führen Sie die folgende Abfrage aus, um eine Liste Ihrer Tabellen zu erhalten:

 SHOW CREATE TABLE wp_posts

 

(wenn Sie nicht das standardmäßige WordPress-Tabellenpräfix verwendet haben oder dies nicht für WordPress tun, ersetzen Sie wp_posts durch… mit welcher Tabelle auch immer Sie ein Problem haben)

2) Es zeigt Ihnen eine Liste der Tabellen. Sie suchen nach so etwas:

 

finding-fulltext

Sie können den FULLTEXT-Teil sehen – die Namen der Indexschlüssel sind in diesem Fall yarpp_title und yarpp_content.

3) Um nun diese FULLTEXT-Schlüssel fallen zu lassen, folgen die folgenden Abfragen:

ALTER TABLE wp_posts DROP INDEX yarpp_title;
ALTER TABLE wp_posts DROP INDEX yarpp_content;

Ich habe sie der Reihe nach gemacht. Wenn Sie nicht zu 100% das gleiche Boot wie ich haben, ersetzen Sie wp_posts durch Ihren Tabellennamen und yarpp_title / yarpp_content durch das, was in Ihren Ergebnissen auftaucht.

4) Aufregend!

Angenommen, Sie haben sich um alle FULLTEXT-Schlüssel gekümmert, dann sollte das Folgende funktionieren, um die Tabelle jetzt in InnoDB zu konvertieren:

ALTER TABLE wp_posts ENGINE=InnoDB;

 

(wieder einmal angenommen, es ist die wp_posts-Tabelle, die Sie konvertieren – falls nicht, verwenden Sie den Namen der Tabelle, die Sie konvertieren)

…und, fertig!

3 Anmerkungen | Sagen Sie einen Kommentar

  1. splizzer auf November 5, 2016 - Klicken Sie hier, um zu antworten
    Vielen Dank, genial tut!
    Ich musste den Speichertyp meiner IP.board-Datenbank von MyISAM auf InnoDB ändern und diese Methode funktionierte für mich.
  2. Anonym auf Januar 11, 2017 - Klicken Sie hier, um zu antworten
    Warum nicht MyISAM benutzen? Wenn Sie die Tabelle `wp_posts` für Beiträge verwenden, bei denen häufig ausgewählt werden (mehr Lesen als Schreiben), ist MyISAM eine bessere Lösung als InnoDB.
  3. Anonymous auf März 8, 2020 - Klicken Sie hier, um zu antworten
    ich tat das oben genannte, aber mein Tisch verschwand... ich weiß nicht, was ich falsch gemacht habe

Sagen Sie einen Kommentar

Sie können einen Alias und gefälschte E-Mails verwenden Wenn Sie sich jedoch für die Verwendung einer echten E-Mail entscheiden, werden "Gravatare" unterstützt. Lesen Sie die Datenschutzerklärung für weitere Details.