[RUBY] [Fehler] Mysql2 :: Fehler: Der angegebene Schlüssel war zu lang, die maximale Schlüssellänge beträgt 767 Byte

Memorandum of Error

Fehlerinhalt

Als ich "Rails DB: Migrate" gemacht habe, habe ich die folgende Fehleranweisung erhalten. (MySQL-Fehler)

Mysql2::Error: Specified key was too long; max key length is 767 bytes

Der Fehler lautet "Der angegebene Schlüssel ist zu lang". Das Hinzufügen verschiedener Spalten zur Tabelle würde das Schlüssellimit von 767 Byte überschreiten. Dieser Fehler wird auftreten.

Ursache

config/database.yml


  default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  socket: /tmp/mysql.sock

Ich erhalte eine Fehlermeldung aufgrund der Beschreibung encoding: utf8mb4.

Lösungen

Schreiben Sie in encoding: utf8 um.

config/database.yml


  default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  socket: /tmp/mysql.sock

Ich kenne den Unterschied zwischen utf8mb4 und utf8 nicht, aber es scheint, dass utf8mb4 1 bis 4 Bytes und utf8 1 bis 3 Bytes speichern kann. Daher können mit utf8 keine Piktogramme gespeichert werden, sondern die Kapazität kann erhöht werden. Ich schätzte.

Wenn Sie die Datenbank bereits mit Rails db: create erstellt haben

% rails db:drop
% rails db:create

Oder

% rails db:reset

Wir müssen also die Datenbank erneut erstellen.

abschließend

Wenn Sie Fehler haben, würde ich mich freuen, wenn Sie darauf hinweisen könnten. Danke fürs Lesen!

Recommended Posts

[Fehler] Mysql2 :: Fehler: Der angegebene Schlüssel war zu lang, die maximale Schlüssellänge beträgt 767 Byte
[Mysql2] Mysql2 :: Fehler: Der angegebene Schlüssel war zu lang, die maximale Schlüssellänge beträgt 767 Byte → Wird durch Erstellen einer neuen Datei mit Zeichenbeschränkungen behoben
SQL-Fehler [08001]: Problemumgehung für das Abrufen öffentlicher Schlüssel ist nicht zulässig [JDBC: MySQL]