Прежде всего, вы должны знать, что ключи и индексы в MySQL являются синонимами. Если вы посмотрите документацию по синтаксису CREATE TABLE , вы можете прочитать:
KEY
обычно является синонимом INDEX
. Ключевой атрибут PRIMARY KEY
также может быть указан в том виде, в котором он KEY
указан в определении столбца. Это было реализовано для совместимости с другими системами баз данных.
Ошибка, которую вы получаете, может быть вызвана двумя причинами:
- Проблемы с диском на сервере MySQL
- Поврежденные ключи / таблицы
В первом случае вы увидите, что добавление ограничения к вашему запросу может временно решить проблему. Если это сработает, у вас, вероятно, есть tmp
папка, которая слишком мала для размера запросов, которые вы пытаетесь выполнить. Затем вы можете решить: tmp
увеличить или уменьшить количество запросов! ;)
Иногда tmp
он достаточно велик, но все равно заполняется, в таких ситуациях вам нужно выполнить некоторую ручную очистку.
Во втором случае есть актуальные проблемы с данными MySQL. Если вы можете легко повторно вставить данные, я бы посоветовал просто отбросить / воссоздать таблицу и повторно вставить данные. Если вы не можете, вы можете попробовать отремонтировать стол на месте с помощью REPAIR table . Обычно это длительный процесс, который вполне может потерпеть неудачу.
Посмотрите полное сообщение об ошибке, которое вы получите:
Неверный ключевой файл для таблицы FILEPATH.MYI; попробуй отремонтировать это
В сообщении упоминается, что вы можете попробовать его отремонтировать. Кроме того, если вы посмотрите на фактический FILEPATH, который вы получите, вы сможете узнать больше:
если это что-то вроде, /tmp/#sql_ab34_23f
это означает, что MySQL необходимо создать временную таблицу из-за размера запроса. Он хранит его в / tmp, и что в вашем / tmp недостаточно места для этой временной таблицы.
если вместо этого он содержит имя реальной таблицы, это означает, что эта таблица, скорее всего, повреждена, и вам следует ее восстановить.
Если вы определили, что ваша проблема связана с размером / tmp, просто прочтите этот ответ на аналогичный вопрос об исправлении: MySQL, Ошибка 126: Неверный ключевой файл для таблицы .