Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich während der MySQL-Datenbankmigration mit act_as_taggable_on die Fehlermeldung „Angegebener Schlüssel war zu lang'?

Warum erhalte ich während der MySQL-Datenbankmigration mit act_as_taggable_on die Fehlermeldung „Angegebener Schlüssel war zu lang'?

Susan Sarandon
Freigeben: 2025-01-04 07:20:35
Original
324 Leute haben es durchsucht

Why Am I Getting a

MySQL-Schlüssellängenfehler während der Datenbankmigration

Beim Versuch, eine Migration mit „acts_as_taggable_on“ zu generieren, kann bei Benutzern der folgende Fehler auftreten:

<br>Mysql::Error: Specified key was too long; Die maximale Schlüssellänge beträgt 1000 Bytes<br>

Dieser Fehler weist darauf hin, dass der Index, der in der Tagging-Tabelle (index_taggings_on_taggable_id_and_taggable_type_and_context) erstellt wird, die maximale Schlüssellängenbeschränkung von 1000 Bytes überschreitet MySQL.

Ursache

Der Fehler wird durch eine Einschränkung in MySQL verursacht, insbesondere bei der Verwendung von Engines wie MyISAM oder InnoDB. Diese Engines erlegen Beschränkungen hinsichtlich des verfügbaren Speicherplatzes für die Definition von Spaltenindizes auf. Für MyISAM liegt die Grenze bei 1000 Byte, während sie für InnoDB bei 767 Byte liegt. Darüber hinaus wirkt sich der Datentyp der indizierten Spalten auf den Speicherplatzverbrauch aus, wobei VARCHAR-Spalten etwa das Dreifache der angegebenen Zeichenbeschränkung beanspruchen.

Lösung

Um dieses Problem zu beheben, Benutzer müssen einen maßgeschneiderten Index erstellen, der nur einen Teil des Datentyps der indizierten Spalte berücksichtigt. Wenn die Spalte „taggable_id“ beispielsweise den Datentyp VARCHAR(100) hat, können Benutzer Folgendes angeben:

CREATE INDEX example_idx ON taggings(taggable_id(50))
Nach dem Login kopieren

Durch die Beschränkung des Index auf die ersten 50 Zeichen der Spalte „taggable_id“ kann die Indexgröße auf reduziert werden 150 Byte, was innerhalb der zulässigen Grenze liegt. Dieser Index ist nur für Suchvorgänge wirksam, die die ersten 50 Zeichen der Spalte „taggable_id“ umfassen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich während der MySQL-Datenbankmigration mit act_as_taggable_on die Fehlermeldung „Angegebener Schlüssel war zu lang'?. 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