Seite 1 von 1

[BUG] MySQL error 1071: Specified key was too long;

Verfasst: Do 12. Jun 2008, 16:49
von rethus
Soeben nach einer Neuinstallation aus den apache-error-Logs gefischt:

Code: Alles auswählen

 /setup/dbupdate.php?step=37 MySQL error 1071: Specified key was too long; max key length is 1000 bytes\n\nALTER TABLE con_properties ADD INDEX (idclient, itemtype , itemid , type, name)

Verfasst: Di 17. Jun 2008, 09:58
von emergence
welche contenido version?
welche php version ?
welche mysql version ?

Verfasst: Mi 18. Jun 2008, 08:16
von rethus
Server Betriebssystem Apache/2.0.53 (Linux/SUSE)
PHP database extension mysql
Datenbankserver-Version 5.0.45
Installierte PHP-Version 5.2.4
Contenido 4.8.4

Verfasst: Mi 18. Jun 2008, 08:30
von emergence
ich kann mit der meldung nicht wirklich was anfangen...
verschoben...

Verfasst: Di 26. Aug 2008, 08:08
von Roland
Hatte gestern das gleiche Problem. Es lag daran, dass es in MySQL eine Beschränkung der Indexlänge gibt (bei mir sind es 500 Byte).
In der Tabelle 'con_properties' wurde die Größe der Felder 'type' und 'name' anscheinend von 64 auf 96 erhöht, wodurch dann beim Index 'idclient' die erlaubte Länge überschritten wurde.
Umgehen kann man das auf die Schnelle indem man die Tabelle manuell anlegt und die Feldgrößen für 'type' und 'name' auf einen entsprechend niedrigeren Wert setzt. Das sollte eigentlich ohne größere Probleme funktionieren. Bei mir sind die Werte in den beiden Feldern jedenfalls weit von der Länge 96 entfernt.

Code: Alles auswählen

CREATE TABLE `con_properties` (
  `idproperty` int(10) NOT NULL default '0',
  `idclient` int(10) NOT NULL default '0',
  `itemtype` varchar(64) NOT NULL,
  `itemid` varchar(255) NOT NULL,
  `type` varchar(96) NOT NULL,
  `name` varchar(96) NOT NULL,
  `value` text NOT NULL,
  `author` varchar(32) NOT NULL,
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  `modifiedby` varchar(32) NOT NULL,
  PRIMARY KEY  (`idproperty`),
  KEY `idclient` (`idclient`,`itemtype`,`itemid`,`type`,`name`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Verfasst: Di 26. Aug 2008, 14:21
von timo.trautmann_4fb
Das ist richtig, dass man normalerweise eine so lange Länge nicht benötigt. Der Tiny kann jedoch auch über diese Einstellungen konfiguriert werden. Einige Identifier der Tiny Einstellungen überschreiten jedoch die 64 Zeichen, so dass diese nicht mehr gesetzt werden konnten. Aus diesem Grund wurde das Feld erweitert. Normalerweise sollte es keine Probleme damit geben. Werde mir aber Gedanken dazu machen, ob man nicht einfach den Index aufteilen kann.

Verfasst: Di 26. Aug 2008, 14:41
von timo.trautmann_4fb
Als Problemlösung werde ich den Kombiindex zerteilen checkin für nächste Version.

Re: [BUG] MySQL error 1071: Specified key was too long;

Verfasst: So 10. Jul 2011, 18:42
von Halchteranerin
Hmm, da habe ich nun das Thema wieder entsperrt. Ich wollte endlich mal eine Site von 4.4.5 auf 4.8.15 upgraden. Ich habe dazu die Datenbank auf dem Server exportiert, lokal importiert, auch alle Dateien heruntergeladen, und mit dem Zwischenschritt 4.6.24 hat auch alles wunderbar geklappt. Es hagelte zunächst im Backend-Editor an Fehlermeldungen, aber es lag an einem falschen Pfad, Fehler korrigiert, alles wunderbar. Dann wollte ich wieder zurück auf den Server. Ich habe die Datenbank komplett geleert (Backup existiert, natürlich), nur als ich die lokal exportierte DB auf dem Server importieren wollte, erhielt ich das:

Code: Alles auswählen

CREATE TABLE IF NOT EXISTS `con_properties` (
`idproperty` int( 10 ) NOT NULL DEFAULT '0',
`idclient` int( 10 ) NOT NULL DEFAULT '0',
`itemtype` varchar( 64 ) NOT NULL ,
`itemid` varchar( 255 ) NOT NULL ,
`type` varchar( 96 ) NOT NULL ,
`name` varchar( 96 ) NOT NULL ,
`value` text NOT NULL ,
`author` varchar( 32 ) NOT NULL ,
`created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`modifiedby` varchar( 32 ) NOT NULL ,
PRIMARY KEY ( `idproperty` ) ,
KEY `idclient` ( `idclient` , `itemtype` , `itemid` , `type` , `name` ) ,
KEY `index_client` ( `idclient` ) ,
KEY `index_itemtype` ( `itemtype` ) ,
KEY `index_itemid` ( `itemid` ) ,
KEY `index_type` ( `type` )
) TYPE = MYISAM ;

MySQL meldet: Dokumentation
#1071 - Specified key was too long. Max key length is 500 
Als ich im Forum danach suchte, stieß ich auf diesen Beitrag. Angeblich soll das behoben worden sein, offensichtlich gibt es immer noch (oder wieder?) Probleme damit. Fürs Erste habe ich itemid auf varchar( 234) gesetzt, halt so, dass die Summe 500 ergibt, aber das Wahre ist es nicht. :roll:

Jouuuuuuuuuuuuuuuuu. :twisted: "You need PHP >= 5.0.0 for Contenido. Sorry, even the setup doesn't work otherwise. Your version: 4.4.9-nmm4".
Jetzt soll ich per E-Mail die Umstellung auf php5 beantragen, und über Nacht wird das erledigt, also bleibt nur zu hoffen, dass morgen der Rest auch noch klappt. :roll: