2016-07-28 24 views
1

Ich habe einen Client mit einem relativ großen (oder zumindest nicht winzigen) Datensatz. Etwa ~ 2 GB auf der Festplatte.MySQL Tabelle voll (InnoDB) - Fehler # 1114

Wenn eine Reporting-Funktion der CRM-Anwendung läuft mit dieser DB läuft, werden wir trifft mit

Database Error Code: The table 'tablexyz' is full, Error 1114 

Dies ist verwirrend für ein paar Gründe .. Die erste ist, dass es das entscheiden verwaltet innerhalb von etwa 3 Sekunden der Seite versuchen, den Bericht zu laden. Die anderen sind das:

A) Es ist eine InnoDB-Tabelle, so gibt es keine expliziten Zeilengrenzen als solche (oder bin ich falsch) ..

B) Es ist ein x64-System mit x64? MySQL installierte so die effektive Größe Grenze einer InnoDB-Tabelle des einzelne Größe limite von 4Tb ..

C) das Plattendateisystem ist nicht voll, es hat rund 700GB zur Verfügung. Die ibdata1-Datei auf der Festplatte ist 1,89 GB, die ib-Protokolldateien sind jeweils 5 MB.

MySQL war Brauch von der Quelle von mir zusammengestellt, wie der Kunde einen benutzerdefinierten MAX_INDEXES Wert von 250 angefordert Soweit mir bekannt ist, würde dies auf diesem Szenario keine Auswirkungen.

Um das Problem zu vermehren, existiert die Tabelle nicht einmal normal ... Es scheint, dass es sich um eine temporäre Tabelle handelt, die während dieses Berichtsdurchlaufs erstellt wurde. Oder zumindest denke ich, dass es das tut. Zu keinem Zeitpunkt während des Ladens der Seite in die CRM-Anwendung kann ich diese Tabelle in MySQL finden. Ich bin mir nicht sicher, ob es ein tieferes Problem gibt, das ich nicht sehe, und es ist ein Ablenkungsmanöver, dass es mir sagt, dass es voll ist? Ideen willkommen.

+0

Jede Idee, was Abfrage ausgeführt wurde? –

+0

Was ist die Einstellung von tmpdir? Es zeigt auf ein "kleines" Dateisystem? –

+0

Hallo Rick, ich denke tmpdir wurde in 5.7 eingeführt? Es sei denn, ich denke an etwas anderes. Dieses System läuft 5.5. Aber abgesehen davon ist das System selbst sehr einfach, es gibt nur ein/mount, das/tmp/var usw. enthält. Als Antwort auf deine erste Frage, eigentlich nein, habe ich keine Ahnung, was das SQL ist, da es sehr tief ist eingebettet in ein sehr komplexes vorgefertigtes CMS. Es ist ziemlich nervig. Ich bin versucht zu sagen, dass es ein Fehler mit dem CMS ist, aber ich möchte zuerst alle Möglichkeiten auf dem System ansprechen. –

Antwort

0

Scheint, die maximale Größe für Ihren innodb_data_file_path erreicht zu haben.

helfen Dies könnte: ERROR 1114 (HY000): The table is full

+0

Hallo, danke dafür. Ich habe "innodb_data_file_path = ibdata1: 10M: autoextend" in my.cnf dekaliert, aber das hat nicht geholfen. Ich habe auch ein paar andere Vorschläge aus diesem Link ohne positiven Erfolg versucht. wie "tmp_table_size = 512M" und "max_heap_table_size = 512M". –

+1

Diese 512M-Einstellungen sind gefährlich. Sie steuern die maximale Größe _memory_ für temporäre Tabellen in komplexen Selektionen. Es ist nicht nur "pro Verbindung", sondern auch "pro TMP-Tabelle". Diese Werte können leicht dazu führen, dass Ihnen der Arbeitsspeicher ausgeht. –

+0

@RickJames, danke dafür, nach genauem Hinsehen hast du Recht. Ich habe diese Änderungen jetzt rückgängig gemacht, da sie das ursprüngliche Problem nicht gelöst haben, und ich möchte lieber keinen weiteren Spielraum für Probleme schaffen. Vielen Dank. –