mySQL Fehler #1170 beim erstellen von Tabellen

reto

Erfahrenes Mitglied
Hallo habe wieder einmal ein Problem beim erstellen von Datenbanken in mySQL. Habe ein .sql Skript zum erstellen der Datenbank erhalten, dass aber offenbar Fehler enthält. Ich bekomme von PHPmyAdmin folgende Fehlermeldung zurück:

#1170 - BLOB column 'comment' used in key specification without a key length

Nachfolgend der Inhalt der .sql-Files:

Code:
DROP TABLE IF EXISTS apg_comments;
CREATE TABLE apg_comments (
  id int(4)  DEFAULT '' NOT NULL auto_increment,
  picid int(6)  DEFAULT '0' NOT NULL ,
  comment text  DEFAULT '' NOT NULL ,
  membid int(4)    ,
  stamp bigint(13)  DEFAULT '0' NOT NULL ,
  val smallint(1)  DEFAULT '0' NOT NULL ,
  PRIMARY KEY (id),
  KEY comment (comment)
);

#
# Table structure for table 'apg_pics'
#
DROP TABLE IF EXISTS apg_pics;
CREATE TABLE apg_pics (
  id mediumint(10)  DEFAULT '' NOT NULL auto_increment,
  filename varchar(255)  DEFAULT '' NOT NULL ,
  picname varchar(255)  DEFAULT '' NOT NULL ,
  descr text  DEFAULT '' NOT NULL ,
  stamp varchar(14)  DEFAULT '' NOT NULL ,
  catid smallint(4)  DEFAULT '0' NOT NULL ,
  hits mediumint(6)  DEFAULT '0' NOT NULL ,
  keywords text  DEFAULT '' NOT NULL ,
  membid smallint(3)  DEFAULT '0' NOT NULL ,
  vis smallint(1)  DEFAULT '0' NOT NULL ,
  hide smallint(1)  DEFAULT '0' NOT NULL ,
  PRIMARY KEY (id),
  KEY descr (descr,keywords,picname),
  KEY picname (picname,keywords)
);

Was ist den mit dem "comment" nicht in Ordnung? Danke schonmal für jede Hilfe!
 
Du definierst deinen Comment als Key, allerdings ist dein Comment als Text-Feld definiert ==> somit hat dein Key keine festgelegte Größe.

Du solltest mal schauen, ob es überhaupt nötig ist, den Comment als Key zu definieren - und wenn, dann wirst du ihn wohl oder übel begrenzen müssen

cu shutdown
 
Original geschrieben von shutdown
Du solltest mal schauen, ob es überhaupt nötig ist, den Comment als Key zu definieren - und wenn, dann wirst du ihn wohl oder übel begrenzen müssen

Vorschlag? Was ist am besten? Auf wieviel würdest du es beschränken?

Das Skript ist wie gesagt nicht von mir und ich bin nicht gerade ein mySQL "Guru".

Aber danke schon mal für die schnelle Antwort!
 
Hallo Reto,

das gleiche Problem wird bei der 2. Tabellen-Kreation auftreten: Dort werden die TEXT-Felder "descr" und "keywords" in den Indexen "descr" und "picname" verwendet. Da diese Felder ebenfalls ohne Längenangabe definiert werden, wird auch da ein Fehler kommen.

Auf welche Größe Du die Felder begrenzen solltest, das hängt davon ab, was Du annimmst wie viel Deine User da reinschreiben werden. Eine voll geschriebene DinA4-Seite hat etwa 4000 Zeichen, das dürfte für einen Bild-Kommentar reichen. Für eine Keywords-Liste reicht vielleicht auch ein VARCHAR(255)-Feld...

Ich gebe allerdings shutdown vollkommen recht: Du solltest Dir wirklich gut überlegen, ob es Sinn macht, die großen TEXT-Felder als Schlüssel zu definieren. Wenn die Tabelle mal tüchtig voll wird, dann gibt das halt auch große Index-Dateien, was die Performance der gesamten Tabelle bremsen kann.

Grüße,
Martin
 
Zurück