Przede wszystkim powinieneś wiedzieć, że klucze i indeksy są synonimami w MySQL. Jeśli spojrzysz na dokumentację dotyczącą składni CREATE TABLE , możesz przeczytać:
KEY
jest zwykle synonimem INDEX
. Atrybut klucza PRIMARY KEY
można również określić tak samo, jak w KEY
przypadku podania w definicji kolumny. Zostało to zaimplementowane w celu zapewnienia zgodności z innymi systemami baz danych.
Teraz rodzaj błędu, który otrzymujesz, może wynikać z dwóch rzeczy:
- Problemy z dyskiem na serwerze MySQL
- Uszkodzone klucze / tabele
W pierwszym przypadku zobaczysz, że dodanie ograniczenia do zapytania może tymczasowo rozwiązać problem. Jeśli to zrobi za Ciebie, prawdopodobnie masz tmp
folder, który jest za mały w stosunku do rozmiaru zapytań, które próbujesz wykonać. Możesz wtedy zdecydować lub zrobićtmp
powiększyć lub zmniejszyć zapytania! ;)
Czasami, tmp
jest wystarczająco duży, ale nadal się zapełnia, w takich sytuacjach należy wykonać ręczne czyszczenie.
W drugim przypadku istnieją rzeczywiste problemy z danymi MySQL. Jeśli możesz łatwo ponownie wstawić dane, radziłbym po prostu upuścić / ponownie utworzyć tabelę i ponownie wstawić dane. Jeśli nie możesz, możesz spróbować naprawić stół na miejscu za pomocą stołu REPAIR . Jest to ogólnie długotrwały proces, który może się nie powieść.
Spójrz na pełny komunikat o błędzie, jaki otrzymujesz:
Niepoprawny plik kluczy dla tabeli „FILEPATH.MYI”; spróbuj to naprawić
Wspomina w komunikacie, że możesz spróbować go naprawić. Ponadto, jeśli spojrzysz na rzeczywistą otrzymaną ścieżkę FILEPATH, możesz dowiedzieć się więcej:
jeśli jest coś podobnego /tmp/#sql_ab34_23f
, oznacza to, że MySQL musi utworzyć tabelę tymczasową ze względu na rozmiar zapytania. Przechowuje go w / tmp i że w twoim / tmp nie ma wystarczającej ilości miejsca dla tej tymczasowej tabeli.
jeśli zamiast tego zawiera nazwę rzeczywistej tabeli, oznacza to, że jest ona prawdopodobnie uszkodzona i należy ją naprawić.
Jeśli stwierdzisz, że problem dotyczy rozmiaru / tmp, po prostu przeczytaj tę odpowiedź na podobne pytanie w celu rozwiązania problemu: MySQL, Błąd 126: Nieprawidłowy plik klucza dla tabeli .