Come si ripara una tabella che non supporta la REPAIR?

di il
1 risposte

Come si ripara una tabella che non supporta la REPAIR?

Ho tre tabelle A, B e AB che fa da relazione molti a molti tra A e B e quindi contiene solo due campi int IdA e IdB che puntano rispettivamente ad A e a B.

Usando phpMyAdmin succede che:

Se faccio una query del tipo:

SELECT * FROM AB WHERE AB.IdA = 2165 AND AB.IdB = 14

mi trova un record.

Se invece faccio:

SELECT * FROM AB WHERE IdA = 2165

mi trova 3 record giusti e uno che non contiene il 2165 ma il 2163.

Ma non compare quello con AB.IdB = 14

Se apro la tabella AB e la ordino in base a IdA
trovo i 3 record della query precedente ovvero corrispondenti a IdA = 2165.

Invece con:

SELECT * FROM AB WHERE AB.IdB = 14

mi trova 23 record giusti e uno che non contiene il IdB=14 ma IdB=3466
che guarda a caso corrisponde al record con AB.IdA = 2163 e AB.IdB = 3466

Se apro la tabella AB e la ordino in base a IdB
mi elenca i 23 record della query precedente ovvero con AB.IdB = 14.

Ho pensato che potesse dipendere da una corruzione della tabella, e ho provato a fare una Check della AB ed infatti mi dice che c'è un record in più ripetto al numero corretto, ma se cerco di fare una REPAIR mi dice che quella tabella non supporta l'operazione di REPAIR.

Come mai?

1 Risposte

  • Re: Come si ripara una tabella che non supporta la REPAIR?

    Chiedo scusa ma mi stavo perdendo in un bicchier d'acqua.

    Ho risolto copiando la tabella AB in una temporanea e mi ha copiato solo i record corretti.

    Poi ho cancellato la tabella rovinata e rinominato la temporanea in AB.

    Adesso funziona. 

Devi accedere o registrarti per scrivere nel forum
1 risposte