2009-09-20 17 views
8

devo problema con la caduta dell'indice chiave esterna, ho sempre arrivare lo stesso erroreMySQL errore quando far cadere indice (errno 150)

ALTER TABLE `comments` DROP INDEX `id_user` 

che emette

1025 - Error on rename of './postuj_cz1/#sql-d834_a0c704' 
to './postuj_cz1/comments' (errno: 150) 

La id_user sull'altro la tabella è semplice indice della chiave primaria.

Sto usando MySQL versione 5.0.85

+1

Provare a eliminare prima tutte le chiavi esterne sul tavolo. –

+0

In realtà non ho nessuno al tavolo –

risposta

2

Secondo this link, l'errore riguarda la definizione del campo chiave primaria. L'errore non riguarda l'indice della chiave esterna.

Controllare la chiave primaria per la tabella COMMENTS per assicurarsi che non contenga la parola chiave UNSIGNED mentre la chiave esterna COMMENTS.id_user ha la parola chiave UNSIGNED. Questa parola chiave stava causando il problema - tipo di campo incoerente.

Per risolvere il problema, aggiungere la parola chiave UNSIGNED alla definizione di chiave primaria per la tabella COMMENTS. Oppure rimuovere la parola chiave UNSIGNED dalla definizione di chiave esterna ...

11

Ci sono anche altre cause. Ad esempio, avevo un indice univoco che coinvolge due colonne di chiavi esterne separate. Ho dovuto eliminare le chiavi esterne in questione prima che potessi rilasciare l'indice univoco. (E ovviamente è possibile aggiungere le chiavi esterne in seguito.)

+1

Grazie, questo era il problema nel mio caso. – nightcoder

5

INNODB: questo potrebbe essere semplice come rimuovere la Relazione prima di rilasciare l'indice.

+1

La relazione era, per il mio caso, il blocco di tutto. Quindi, rimuovendo le relazioni, la prossima rimozione dell'indice, la successiva creazione di un nuovo indice, quindi, ripristina le relazioni – Vaseltior

1

L'indice è di una chiave esterna sulla tabella 'utente', in modo da In un primo momento, provate questo comando:

SHOW CREATE TABLE my_table 

Trova il nome del vincolo corrispondente all'indice sulla chiave esterna,

e dopo che, provare il comando:

ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode 

avviso: se si tenta di eliminare la chiave esterna con il nome di chiave esterna, si avrà un errore!

Problemi correlati