Я не часто прихожу сюда за помощью, но я очень расстроен этим, и я надеюсь, что кто-то столкнулся с ним раньше.
Всякий раз, когда я пытаюсь извлечь записи из таблицы, используя более одного соединения, я получаю эту ошибку:
#126 - Incorrect key file for table '/tmp/#sql_64d_0.MYI'; try to repair it
Таким образом, этот запрос приведет к ошибке:
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
Но этого не будет:
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
И не будет и этого:
SELECT * FROM `core_username`
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
Что может быть причиной этого? Я действительно не знаю, как сделать ремонт tmp-таблицы, но я действительно не думаю, что проблема в том, что это новая таблица tmp каждый раз. Таблица имени пользователя довольно большая (233 718 записей прямо сейчас), но я сомневаюсь, что это имеет к этому какое-то отношение.
Любая помощь будет высоко оценена.
UPDATE. После некоторого дополнительного тестирования, кажется, что ошибка возникает только при попытке упорядочить результаты. То есть, этот запрос даст мне то, что я ожидаю:
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
LIMIT 1
Но если я добавлю:
ORDER BY `core_username`.`name` ASC
Ошибка инициируется. Это происходит только на конкретном веб-сервере, который я использую в настоящее время. Если я загружу базу данных и попробую то же самое на своем локальном хосте, а также на других серверах, он работает нормально. Версия MySQL 5.0.77.
Зная это, я довольно уверен, что происходит то, что создаваемая таблица tmp слишком велика, и MySQL дросселирует как описано в этом сообщении в блоге. Я все еще не уверен, каким будет решение, хотя...