2009-06-08 14 views

Odpowiedz

55

Używasz niewłaściwego rodzaju tabeli. MySQL obsługuje kilka różnych typów tabel, ale najczęściej używane są MyISAM i InnoDB. MyISAM (in MySQL 5.6+also InnoDB tables) are the types of tables that Mysql supports for Full-text indexes.

Aby sprawdzić typ problemu tabeli jest następujące zapytanie SQL:

SHOW TABLE STATUS 

patrząc na wynik zwracany przez zapytanie, znajdź swój stół i odpowiednią wartość w kolumnie silnika. Jeśli ta wartość jest inna niż MyISAM lub InnoDB, wówczas Mysql zgłosi błąd, jeśli spróbujesz dodać indeksy FULLTEXT.

Aby rozwiązać ten problem, można użyć zapytania SQL poniżej, aby zmienić typ silnika:

ALTER TABLE <table name> ENGINE = [MYISAM | INNODB] 

dodatkowe informacje (pomyślałem, że może to być przydatne): MySQL przy użyciu różnych rodzajów przechowywania silnika w celu optymalizacji dla konieczna funkcjonalność określonych tabel. Przykład MyISAM jest domyślnym typem dla systemów operacyjnych (oprócz okien), preformy WYBIERA i INSERTs szybko; ale nie obsługuje transakcji. InnoDB jest domyślnym systemem Windows, może być używany do transakcji. Ale InnoDB wymaga więcej miejsca na dysku na serwerze.

+0

Misprint: MYISAM * –

+0

Nie, ale instrukcja ALTER TABLE mówi "MYISM". – Henning

+0

Ahh dzięki chłopaki ... poprawili to. – Cimplicity

5

Czy używasz InnoDB? Jedynym typem tabeli obsługującym FULLTEXT jest MyISAM.

+1

To już nie jest prawda. – jcoffland

10

Aż do MySQL 5.6, MyISAM był jedynym silnikiem pamięci masowej obsługującym wyszukiwanie pełnotekstowe (FTS), ale prawdą jest, że InnoDB FTS w MySQL 5.6 jest syntaktycznie identyczny z MyISAM FTS. Przeczytaj poniżej, aby uzyskać więcej informacji.

InnoDB Full-text Search in MySQL 5.6

0

oprócz tabeli MyISAM PARTITIONING również nie obsługują full-text indeksu.

Powiązane problemy