+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Error SQL=Specified key was too long; max key length is 1000 bytes:

  1. #1
    Neu an Board
    Registriert seit
    07.08.2005
    Beiträge
    1
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Error SQL=Specified key was too long; max key length is 1000 bytes:

    Hallo leute bei der Installation von Mambo habe ich folgende meldung.

    SQL=Specified key was too long; max key length is 1000 bytes:

    # Table structure for table `mos_core_acl_aro`

    CREATE TABLE `mos_core_acl_aro` (
    `aro_id` int(11) NOT NULL auto_increment,
    `section_value` varchar(240) NOT NULL default '0',
    `value` varchar(240) NOT NULL default '',
    `order_value` int(11) NOT NULL default '0',
    `name` varchar(255) NOT NULL default '',
    `hidden` int(11) NOT NULL default '0',
    PRIMARY KEY (`aro_id`),
    UNIQUE KEY `section_value_value_aro` (`section_value`,`value`),
    UNIQUE KEY `mos_gacl_section_value_value_aro` (`section_value`,`value`),
    KEY `hidden_aro` (`hidden`),
    KEY `mos_gacl_hidden_aro` (`hidden`)
    ) TYPE=MyISAM
    = = = = = = = = = =

    Wie kann ich das problee beheben??

    MFG

    willy

  2. #2
    Gehört zum Inventar Avatar von KaffDaddy
    Registriert seit
    06.02.2005
    Ort
    Kassel
    Beiträge
    5.868
    Bedankte sich
    27
    Erhielt 1.072 Danksagungen
    in 710 Beiträgen

    Standard

    Moin Moin !

    Welchen Webserver (Version), MySQL-Version und PHP benutzt Du? Meistens liegt es an der MySQL-Version. Vielleicht installierst Du mal testweise eine neue?

    CU
    Stephan
    Insomniaonline

    Gelöste Threads bitte markieren: Anleitung

  3. #3
    Neu an Board
    Registriert seit
    18.07.2006
    Ort
    Kiel
    Alter
    33
    Beiträge
    47
    Bedankte sich
    25
    Erhielt 3 Danksagungen
    in 2 Beiträgen

    Standard

    Moin

    Das liegt am Zeichensatz, die meisten MySQL Server mit der Version 4.x sind hier in Deutschland mit "Latin" Zeichensätzen kodiert. Der neue Server läuft wahrscheinlich auf UTF-8 und damit erhöht sich die Byte Anzahl pro Zeichen.

    Bei varchar beträgt die maximallänge 65.532 byte, UTF-8 ist aber ein 32 Bit Zeichensatz denn der Zeichensatz UTF-8 könnte mit 16 Bit garnicht die ganzen Zeichen speichern und ist ein 32 bit Zeichensatz.

    Einen Versuch, alle gebräuchlichen Schriftsysteme in einem Zeichensatz darstellbar zu machen, also beispielsweise auch die Schriftzeichen aus Silbenschriften wie dem Japanischen, Chinesischen und Koreanischen, hat die ISO mit der Einführung des Unicode unternommen. Unicode war nach der "Basic Multilingual Plane" (BMP; Dt.: "Grundlegende, mehrsprachige Ebene") zunächst ein "Double Byte Character Set"; in diesem Zeichensatz wurde also jedes Zeichen mit 16 Bit codiert; es waren daher also 65.536 Zeichen möglich.

    In der Unicode-Version 3.0 vom September 1999 wurden bereits 49.194 Zeichen von 65.536 möglichen Zeichen zugewiesen. In die Version 3.1 vom März 2001 sollten nochmals 44.946 Zeichen, zum Beispiel aus historischen Schriften (etwa Runen oder Hieroglyphen), zusätzlich aufgenommen werden, so dass der Unicode 94.140 Zeichen umfasst. So viele Zeichen sind in 16 Bit pro Zeichen jedoch nicht mehr darstellbar; deswegen werden im Unicode nun 32 Bit (vier Byte) pro Zeichen verwendet, was 4.294.967.296 verschiedene Zeichen ermöglicht.
    Nachzulesen ist dies hier ...

    mit varchar (240) bei UTF-8 würdest Du aber die maximallänge der Tabelle mit varchar mit 65.532 Zeichen überschreiten.

    Nachzulesen hier in der MySQL Doku über varchar

    Nun ist zu überlegen was in diesem Tabellenfeld gespeichert werden soll und ob eine kleinere Zeichenzahl nicht vielleicht ausreichend ist?

    bei der Spalte `section_value` wäre ein zeichenlänge von 96 Zeichen bestimmt ausreichend genauso wie bei `value` und ´name` da diese nur a) die Gruppe b) die Gruppen ID und c) den Namen enthält. Mit 96 Zeichen bist Du immernoch gut davor pro Datensatz

    Also mach folgendes daraus und dann klappts auch mit UTF-8 und MySQL 5.x

    Code:
    # Table structure for table `mos_core_acl_aro`
    
    CREATE TABLE `mos_core_acl_aro` (
    `aro_id` int(11) NOT NULL auto_increment,
    `section_value` varchar(96) NOT NULL default '0',
    `value` varchar(96) NOT NULL default '',
    `order_value` int(11) NOT NULL default '0',
    `name` varchar(96) NOT NULL default '',
    `hidden` int(11) NOT NULL default '0',
    PRIMARY KEY (`aro_id`),
    UNIQUE KEY `section_value_value_aro` (`section_value`,`value`),
    UNIQUE KEY `mos_gacl_section_value_value_aro` (`section_value`,`value`),
    KEY `hidden_aro` (`hidden`),
    KEY `mos_gacl_hidden_aro` (`hidden`)
    ) TYPE=MyISAM
    = = = = = = = = = =
    Wichtig ist noch das die Sprachdateien von Joomla auch mit dem UTF-8 Zeichensatz codiert werden damit Du keine Überraschungen mit den Umlauten erlebst z.B: ?? ansatt ä oder ö etc.

    Einfach "notepad2" besorgen,


    bekommst du hier


    Dateien öffnen dann auf FILE > ENCODING > UTF-8 Auswählen, speichern und hochladen. Das muss mit jeder Sprachdatei von jedem Modul/ Componente gemacht werden damit die Dateien im richtigen Zeichensatz codiert sind, die irgendwas mit Sprache oder codierung zu tun haben. Die meisten Entwickler haben bestimmt noch den latin bzw. iso-8859-1 oder iso-8859-2 Zeichensatz verwendet.

    In der german.php im languages ordner noch die Zeile

    DEFINE('_ISO','charset=iso-8859-1'); (bei mir Zeile 421)

    und anstatt iso-8859-1 trägst Du utf-8 ein.

    Jetzt sollte alles paletti sein und funzen

    Ich hoffe ich konnte helfen und ein bisschen Licht ins Dunkel von ISO-8859-1 und UTF-8 bringen in verwendung mit MySQL 5 etc.



    LG your-greatest-fan

    OPEN SOURCE ROCKZ
    Open Source R O C K Z

  4. Erhielt Danksagungen von:


+ Antworten

Ähnliche Themen

  1. HILFE EINLOGGEN NICHT MEHR MÖGLICH!
    Von Jimmyking im Forum Allgemeine Fragen zu Mambo 4.5.0
    Antworten: 3
    Letzter Beitrag: 02.03.2004, 12:04

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein