FEHLER 1878 (HY000): Temporärer Dateischreibfehler

8

Ich führe eine Abfrage

aus
  

ALTER TABLE message ADD COLUMN syncid int (10) NICHT NULL STANDARD 0;

MySQL hat einen Fehler zurückgegeben:

%Vor%

message Tabelleninfo:

Motortyp: InnoDB

Zeilen: 15786772

Indexlänge: 1006.89 MB

Datenlänge: 11,25 GB

Wie behebt man es?

    
dadait 26.08.2014, 09:40
quelle

1 Antwort

9

MySQL implementiert ALTER TABLE als Tabelle neu erstellen, so dass zwei Kopien der Tabelle zu irgendeinem Zeitpunkt während des Prozesses auf dem System vorhanden ist. Sie benötigen mehr als 12 GB freien Speicherplatz für diesen Vorgang.

Geben Sie etwas Platz frei. Alternativ können Sie Ihren Server so einstellen, dass er ein anderes temporäres Verzeichnis verwendet , wenn genügend vorhanden ist Raum.

Alternative zur Alternative (die WHILE muss möglicherweise in eine gespeicherte Prozedur eingeschlossen werden):

  • Erstellen Sie eine neue Tabelle ( temp_table ) mit der neuen Struktur
  • Übertragen Sie Daten in kleinen Batches von original_table in temp_table
  • Drop original_table und umbenennen temp_table


%Vor%

Wenn Ihre Tabelle InnoDB verwendet, ist eine ausführlichere Lösung mit SELECT ... FOR UPDATE; anstelle von Tabellensperren möglich, aber ich vertraue darauf, dass Sie auf die Idee kommen.

    
RandomSeed 26.08.2014 10:13
quelle

Tags und Links