Heim > Datenbank > MySQL-Tutorial > So lösen Sie den MySQL-Fehler: „Der angegebene Schlüssel war zu lang; die maximale Schlüssellänge beträgt 1000 Byte'?

So lösen Sie den MySQL-Fehler: „Der angegebene Schlüssel war zu lang; die maximale Schlüssellänge beträgt 1000 Byte'?

Mary-Kate Olsen
Freigeben: 2025-01-03 09:10:39
Original
404 Leute haben es durchsucht

How to Solve MySQL Error:

Fehlerbehebung „Mysql::Error: Specified key was too long; max key length is 1000 bytes“

Beim Versuch, Folgendes auszuführen Befehle:

script/generate acts_as_taggable_on_migration
rake db:migrate
Nach dem Login kopieren

Sie können auf das stoßen Fehler:

Mysql::Error: Specified key was too long; max key length is 1000 bytes: CREATE INDEX `index_taggings_on_taggable_id_and_taggable_type_and_context` ON `taggings` (`taggable_id`, `taggable_type`, `context`)
Nach dem Login kopieren

Ursache

Dieser Fehler tritt aufgrund von Einschränkungen auf, die die Speicher-Engines von MySQL hinsichtlich der Größe von Indizes auferlegen. MyISAM-Engines, die üblicherweise mit Ruby on Rails verwendet werden, begrenzen die Indexgröße auf 1.000 Bytes.

Lösung

Um dieses Problem zu beheben, ziehen Sie die folgenden Strategien in Betracht:

  • Indexgröße reduzieren: Untersuchen Sie die am Index beteiligten Spalten und stellen Sie fest, ob dies möglich ist verkürzt werden, ohne den Nutzen zu beeinträchtigen. Wenn in einer Spalte beispielsweise vollständige Namen gespeichert sind, sollten Sie erwägen, sie auf die ersten 50 Zeichen zu kürzen.
  • Partitionsindex: Teilen Sie den Index in separate Indizes für Teilmengen von Spalten auf. Zum Beispiel:
CREATE INDEX example_idx_id ON YOUR_TABLE(taggable_id)
CREATE INDEX example_idx_type ON YOUR_TABLE(taggable_type)
Nach dem Login kopieren
  • Speicher-Engine ändern: Erwägen Sie die Migration zu InnoDB, das größere Indexgrößen (bis zu 767 Byte) unterstützt. Dies erfordert jedoch möglicherweise eine zusätzliche Konfiguration und ist möglicherweise nicht für alle Anwendungen geeignet.

Zusätzliche Konfiguration

Wie in Ihren Datenbankkodierungseinstellungen angegeben, ist Ihre Datenbank Für die Verwendung der Zeichenkodierung „latin1“ konfiguriert. Dies kann die Wirksamkeit von Indizes für Spalten mit UTF-8-Codierung einschränken. Um die Indexleistung zu verbessern, sollten Sie Ihre Datenbank in die UTF-8-Kodierung konvertieren.

Das obige ist der detaillierte Inhalt vonSo lösen Sie den MySQL-Fehler: „Der angegebene Schlüssel war zu lang; die maximale Schlüssellänge beträgt 1000 Byte'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage