Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Falsche Schlüsseldatei für Tabelle „/tmp/#sql_18b4_0.MYI“. Versuchen Sie, sie zu reparieren

Oh Scheiße, das war ein dummer Fehler von meiner Entwicklerseite. Nach 30 Minuten Brainstorming, um diese Abfrage auf andere Weise zu entwerfen, bekam ich dieses Problem, dass der Entwickler Join falsch verwendete, aufgrund dessen konnte MySQL die Tabellendaten nicht richtig verbinden und verbraucht den gesamten Speicherplatz im /tmp-Verzeichnis und löst diesen Fehler aus. Die richtige Abfrage ist hier-

SELECT `PsMasterSubject`.`id`, `PsMasterSubject`.`name`, `PsProgram`.`name`, `PsStreamLevel`.`id` 
FROM `misdb`.`ps_master_subjects` AS `PsMasterSubject` 
LEFT JOIN `misdb`.`ps_programs` AS `PsProgram` ON (`PsMasterSubject`.`ps_program_id` = `PsProgram`.`id`) 
LEFT JOIN `misdb`.`ps_stream_levels` AS `PsStreamLevel` ON (`PsStreamLevel`.`id` = `PsProgram`.`ps_stream_level_id`) 
LEFT JOIN `misdb`.`ps_program_levels` AS `PsProgramLevel` ON (`PsProgramLevel`.`id` = `PsStreamLevel`.`ps_program_level_id`) 
WHERE 1 = 1 
ORDER BY `PsMasterSubject`.`id` DESC LIMIT 10;

Nun stellt sich die Frage, ob dies ein MySQL-Fehler ist, da MySQL einen falschen Syntaxfehler ausgeben sollte, aber hier versucht MySQL, eine temporäre Tabelle für temporäre Daten zu erstellen.

Ich wäre sehr dankbar, wenn mir das jemand erklären könnte.