phpbar.de logo

Mailinglisten-Archive

Problem Volltextsuche und Fulltext_Indexerstellung

Problem Volltextsuche und Fulltext_Indexerstellung

Ralf Narozny mysql-de_(at)_lists.bttr.org
Mon, 22 Jul 2002 16:53:12 +0200


m.beck_(at)_bn-automation.de wrote:

> Hi!
>  
> Ich möchte eine Fulltextsuche realisieren. Leider kommt beim Erstellen der Fulltext-Indexe immer folgender Fehler. Sowohl V3.23.49 als auch bei V4.0.2.
>  
> 7 -Error on rename of '.\Database\tabelle.MYI' to '.\Database\#sql2-30c-27.MYI'(ERRcode: 13)


Die dummen Fragen immer zuerst ;-) :

Hat der User, mit dem Du das Kommando ausführst genug Rechte?
Hat der User unter dem die MySQL läuft Schreibrechte in dem Verzeichnis? 
(Unter Windows kenne ich mich nicht aus, daher gibt es möglicherweise 
noch das Recht Dateien zu erstellen o.ä.)

Über welche Schnittstelle schickst Du das Kommando ab 
(Kommandozeilen-Client, ODBC/JDBC, Browser (PHP, Perl, o.ä.))?

>
> Die Spalten haben als Typ 'longtext','tinytext' und 'varchar', was 
> eigentlich für Volltextsuche zugelassen ist oder nicht??
> Kurioserweise kommt dazu, dass wenn ich nun z.B. eine neue Spalte 
> anlegen will wieder der oben beschriebene Fehler kommt. Ist die DB 
> kaputt?
> Aber selbst wenn ich die DB neu anlege mit allen Werten und 
> Einstellungen. Immer kommt dieser Fehler.
> Nach langem hin und her konnte ich kurzzeitig mal Fulltext-Indexe 
> erzeugen (bis die Fehlermeldung wieder kam :-)). Als ich per 
> SQL-Anweisung die DB testen wollte kam die Meldung das diese Spalte 
> keinen Fulltext-Index habe, obwohl ich sie als Fulltext angelegt habe 
> und sie mir so auch angezeigt wird.(MySql-Front 2.2)
>  
> Kann mir jemand helfen???????
>  
>
> Zudem habe ich noch eine Frage zu den Indexen:
> Wenn ich bei mehreren Spalten einen Fulltext-Index erzeugen möchte, muss ich da 
> für alle den gleichen Indexnamen verwenden oder jeder einen anderen?? Bzw. wie verhält sich das überhaupt mit der Benennung?
> Welche Rolle spielt überhaupt der Indexname bei der Suche, denn in der SQL-Anweisung muss ich ihn ja nicht angeben.


Indexnamen sind für MySQL intern total unwichtig. Die Benamselung von 
Indizes ist nur für uns dumme Menschen wichtig, genau dann, wenn uns 
MySQL Indexnamen anzeigt und wir dann nicht instantan keine Ahnung haben 
(sondern erst Momente später ;-) ). Ich persönlich denke, daß man am 
Namen bereits das meiste erkennen sollte. Daher nenne ich Indizes meist 
in dieser Form:

idx_<Tabellename>__<Spalte1>_<Spalte2>_...

Diese Namen sind dann nur schlecht zu schreiben, aber wann muß man das 
schon? Allerdings läßt sich bei

explain SELECT ... FROM <Tabellenname> LEFT JOIN ...

sehr leicht erkennen, ob der richtige (erwartete) Index verwandt wird.

>
> siehe hier:
> SELECT * FROM Tabelle WHERE MATCH (Spalte) AGAINST ('Suchwort');
>  
>  


Gruß
 Ralf

-- 
Ralf Narozny
SPLENDID Internet GmbH & Co KG
Skandinaviendamm 212, 24109 Kiel, Germany
fon: +49 431 660 97 0, fax: +49 431 660 97 20
mailto:rnarozny_(at)_splendid.de, http://www.splendid.de



---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive