Problemet er forårsaget af manglen på diskplads i /tmp-mappen. /tmp-volumenet bruges i forespørgsler, der kræver oprettelse af midlertidige tabeller. Disse midlertidige tabeller er i MyISAM-format, selvom forespørgslen kun bruger tabeller med InnoDB.
Her er nogle løsninger:
- optimer forespørgslen, så den ikke opretter midlertidige tabeller (omskriv forespørgslen, opdel den i flere forespørgsler, eller tilføj korrekte indekser, analyser udførelsesplanen med pt-query-digest
og
EXPLAIN) Se denne Percona-artikel om midlertidige borde . - optimer MySQL, så det ikke vil oprette midlertidige tabeller (sort_buffer_size, join_buffer_size). Se:https://dba.stackexchange.com/questions/53201/mysql-creates-temporary-tables-on-disk-how-do-i-stop-it
- gør tabellerne mindre. Hvis det er muligt, skal du slette unødvendige rækker
- brug
SELECT table1.col1, table2,col1 ...i stedet forvælg *kun at bruge de kolonner, du har brug for i forespørgslen, til at generere mindre midlertidige tabeller - brug datatyper, der tager mindre plads
- tilføj mere diskplads på den diskenhed, hvor /tmp-mappen er
- ændre den midlertidige mappebruger af mysql ved at indstille
TMPDIRmiljøvariabel før opstart af mysqld. PunktTMPDIRtil en mappe på en diskenhed, der har mere ledig plads. Du kan også brugetmpdirmulighed i/etc/my.cnfeller--tmpdiri kommandolinjen i mysqld-tjenesten. Se:B.5.3.5 Hvor MySQL gemmer midlertidige filer