Перш за все, ви повинні знати, що ключі та індекси є синонімами в MySQL. Якщо ви подивитеся на документацію про синтаксис CREATE TABLE , ви можете прочитати:
KEY
зазвичай є синонімом для INDEX
. Ключовий атрибут PRIMARY KEY
також може бути вказаний як раз, KEY
коли він задається у визначенні стовпця. Це було реалізовано для сумісності з іншими системами баз даних.
Тепер помилка, яку ви отримуєте, може бути пов’язана з двома речами:
- Проблеми з диском на сервері MySQL
- Пошкоджені ключі / таблиці
У першому випадку ви побачите, що додавання ліміту до запиту може тимчасово вирішити проблему. Якщо це робить це для вас, напевно, у вас є tmp
папка, яка занадто мала для розміру запитів, які ви намагаєтеся зробити. Потім ви можете вирішити або збільшити tmp
масштаб, або зробити ваші запити меншими! ;)
Іноді, tmp
досить великий, але все-таки заповнюється, в цих ситуаціях потрібно буде зробити чистку вручну.
У другому випадку є актуальні проблеми з даними MySQL. Якщо ви можете легко вставити дані, я б радив просто скинути / заново створити таблицю та знову вставити дані. Якщо ви не можете, спробуйте відновити таблицю на місці за допомогою таблиці REPAIR . Це, як правило, тривалий процес, який може бути дуже невдалим.
Подивіться повне повідомлення про помилку, яке ви отримуєте:
Неправильний файл ключів для таблиці "FILEPATH.MYI"; спробуйте його відремонтувати
У повідомленні зазначається, що ви можете спробувати його відремонтувати. Крім того, якщо ви подивитеся на фактичний FILEPATH, який ви отримаєте, ви можете дізнатися більше:
якщо це щось подібне, /tmp/#sql_ab34_23f
це означає, що MySQL потрібно створити тимчасову таблицю через розмір запиту. Він зберігає його в / tmp, і що у вашому / tmp не вистачає місця для цієї тимчасової таблиці.
якщо вона містить назву фактичної таблиці, це означає, що ця таблиця дуже пошкоджена, і вам слід її відремонтувати.
Якщо ви виявите, що ваша проблема має розмір / tmp, просто прочитайте цю відповідь на аналогічне запитання для виправлення: MySQL, Помилка 126: Неправильний файл ключа для таблиці .