Si dovrebbe provare con il nome della chiave esterna come suggerito Fahim Parkar. In realtà questo non funziona sempre.
Nel mio caso ho usato il codice
FOREIGN KEY `fk`(`col1`) REFERENCES `table2`(`col1`)
per aggiungere la fk dalla creazione.
Il problema con questo codice non è valido e dovrebbe generare una sorta di errore di sintassi, ma ha comunque aggiunto una chiave esterna con un nome casuale.
Quando ho aggiunto il fk con la sintassi giusta:
CONSTRAINT `fk` FOREIGN KEY (`col1`) REFERENCES `table2`(`col1`)
il seguente codice è sceso in modo corretto:
ALTER TABLE `table1` DROP FOREIGN KEY `fk`
Quindi questo tipo di errore può accadere anche se si tenta di rimuovere una straniera chiave con un nome non valido. È importante visualizzare le proprietà della tabella con
SHOW CREATE TABLE `table1`
e verificare i nomi di chiavi esterne se si ottiene questo tipo di errori.
Questo può aiutare a capire http://stackoverflow.com/questions/160233/what-does-mysql-error-1025-hy000-error-on-rename-of-foo-errorno-150-me – Imdad
@ Imdad Questo collegamento descrive un altro errore - (errno: 150) – Devart
Prova questo. Crea una nuova tabella (senza vincoli di chiave esterna). copia i dati nella nuova tabella (usando la sintassi INSERT INTO new_table SELECT * FROM old_table) Rilascia la vecchia tabella – Imdad