24Okt/08Off
Relay, ein Verzeichnis-Manager
Online im Verzeichnis rumbrowsen wollte ich schon immer. Nun bin ich beim Lesen über Dependency Injection irgendwie auf relay gestossen. Nunja, leider scheitert das an einer Eigenart von MySQL:
CREATE TABLE IF NOT EXISTS `relay_clients` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`name` text NOT NULL ,
`display` text,
`path` text NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE KEY `pn` ( `path` ( 250 ) , `name` ( 250 ) )
);
scheitert mit der Fehlermeldung:
Specified key was too long; max key length is 1000 bytes. Could not create the table relay_clients
Nun, warum? 250+250 sollten doch weniger als 1000 sein? Jein ![]()
Willkommen im Multibyte-Zeitalter. Früher gab es nur ASCII, heute gibt es Unicode. ASCII braucht ein Byte, Unicode je nachdem 1-3 Byte. Und MySQL geht jetzt einfach mal vom schlimmsten Fall aus, nämlich 3 Byte. Somit haben wir also (250 + 250) *3 und damit auch mehr als 1000 Byte. Wie man das behebt? Einfach kein Unicode verwenden. Sonst weiss ich noch keine Lösung
Oktober 24th, 2008
Ja, die 250 durch 133 ersetzen behebt die Fehlermeldung, ich weiss aber nicht, ob die Anwendung damit zufrieden ist
Oktober 24th, 2008
Und ich bin nicht der Einzige dem das aufgefallen ist:
Eintrag auf spikesource.com
MySQL bug #6604
MySQL bug #9502
neohapsis archives