Cómo eliminar un índice de texto completo (fulltext) en MySQL – cambiando de MyISAM a InnoDB

Así que decidí desinstalar YARPP (el «otro plugin de posts relacionados» para WordPress), y convertir mi tabla wp_posts de MyISAM de nuevo en InnoDB.

Por supuesto, cuando fui a hacer la conversión MyISAM -> InnoDB, recibí un error de myPhpAdmin:

The used table type doesn’t support FULLTEXT indexes

No es inesperado… las versiones de MySQL < 5.6.4 no soportan FULLTEXT en InnoDB, así que sabía que tenía que eliminar los índices de FULLTEXT pero no sabía muy bien cómo. Y me llevó un tiempo encontrar la solución. Pero aquí está:

1) Ejecute la siguiente consulta para obtener una lista de sus tablas:

 SHOW CREATE TABLE wp_posts

 

(si no usaste el prefijo de la tabla de wordpress por defecto o no estás haciendo esto para WordPress, reemplaza wp_posts con… cualquier tabla con la que tengas un problema)

2) Le mostrará una lista de las tablas. Estás buscando algo como esto:

 

finding-fulltext

Puedes ver la parte del FULLTEXT – los nombres de las claves de índice son yarpp_title y yarpp_content en este caso.

3) Ahora para soltar estas claves de FULLTEXT, las siguientes consultas:

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

Los hice de uno en uno. Obviamente, si no estás en 100% el mismo barco que yo, reemplaza wp_posts con tu nombre de tabla, y yarpp_title / yarpp_content con lo que aparezca en tus resultados.

4) ¡Emocionante!

Asumiendo que ya se han ocupado de todas las claves del FULLTEXT, lo siguiente debería funcionar para convertir la tabla en InnoDB ahora:

ALTER TABLE wp_posts ENGINE=InnoDB;

 

(asumiendo una vez más que es la tabla wp_posts la que estás convirtiendo – si no, usa el nombre de la tabla que estás convirtiendo)

…y, ¡listo!

4 Comentarios | Diga un comentario

  1. splizzer en noviembre 5, 2016 - haga clic aquí para responder
    Muchas gracias, impresionante tut!
    Tuve que cambiar el tipo de almacenamiento de mi base de datos IP.Board de MyISAM a InnoDB y este método funcionó para mí.
  2. Anonym en enero 11, 2017 - haga clic aquí para responder
    ¿Por qué no usar MyISAM? Cuando usa la tabla `wp_posts` para publicaciones, donde hay selecciones frecuentes (más lectura que escritura), entonces MyISAM es mejor solución que InnoDB.
  3. Anónimo en marzo 8, 2020 - haga clic aquí para responder
    Hice lo anterior, pero mi mesa desapareció... no sé en qué me equivoqué.
  4. Grzegorz en agosto 20, 2021 - haga clic aquí para responder
    Funciona perfectamente. Sois los mejores :-) Gracias

Diga un comentario

Puedes usar un alias y un correo electrónico falso. Sin embargo, si eliges usar un correo electrónico real, se admiten los "gravatars". Lee la política de privacidad para más detalles.