sql >> Database teknologi >  >> RDS >> Mysql

Forkert nøglefil til tabellen '/tmp/#sql_18b4_0.MYI' prøv at reparere den

Åh shit, det var en dum fejl fra min udvikler-ende. Efter 30 minutters brainstorming for at designe denne forespørgsel på en anden måde fik jeg dette problem, at udvikleren brugte join på en forkert måde, på grund af dette var mysql ikke i stand til at forbinde tabeller korrekt og bruger al plads i /tmp-mappen og kaster denne fejl. Den korrekte forespørgsel er her-

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;

Spørgsmålet er nu, at dette er en mysql-fejl, da mysql burde give en forkert syntaksfejl, men her forsøger mysql at oprette en midlertidig tabel for midlertidige data.

Jeg vil være meget taknemmelig, hvis nogen kan klare dette for mig.




  1. Generel fejl:OS-version stemmer ikke overens

  2. Tjek, om der findes en midlertidig tabel, og slet, om den findes, før du opretter en midlertidig tabel

  3. Sammenlign strenge, der ignorerer accenter i SQL (ORACLE)

  4. php begrænsning overtrædelse Fejl 1452