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!

4 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
  4. Grzegorz auf August 20, 2021 - Klicken Sie hier, um zu antworten
    Funktioniert perfekt. Ihr seid die Besten :-) , Danke

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.