Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mysql::Error:Der angegebene Schlüssel war zu lang; Die maximale Schlüssellänge beträgt 1000 Byte

Dies ist ausschließlich ein MySQL-Problem -

MySQL hat verschiedene Engines - MyISAM, InnoDB, Memory...

MySQL hat unterschiedliche Beschränkungen für den Speicherplatz, den Sie verwenden können Indizes für Spalte(n) definieren - für MyISAM sind es 1.000 Bytes; es ist 767 für InnoDB . Und der Datentyp dieser Spalten ist wichtig - für VARCHAR , es ist 3x also ein Index auf einem VARCHAR(100) nimmt 300 dieser Bytes (weil 100 Zeichen * 3 =300).

Um eine Indexierung zu ermöglichen, wenn Sie den Höchstwert erreichen, können Sie den Index in Bezug auf Teile des Spaltendatentyps definieren:

CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))

Angenommen, dass your_column ist VARCHAR(100) , besteht der Index im obigen Beispiel nur aus den ersten 50 Zeichen. Bei der Suche nach Daten über das 50. Zeichen hinaus kann der Index nicht verwendet werden.