8 Stimmen

MySQL-Fehler beim Löschen von Indizes (errno 150)

Ich habe ein Problem mit dem Fallenlassen eines Fremdschlüsselindex, ich erhalte immer den gleichen Fehler

 ALTER TABLE `comments` DROP INDEX `id_user`  

die Folgendes ausgibt

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

El id_user auf der anderen Tabelle ist ein einfacher Primärschlüsselindex.

Ich verwende MySQL Version 5.0.85

1 Stimmen

Versuchen Sie zunächst, alle Fremdschlüssel für die Tabelle zu löschen.

0 Stimmen

Eigentlich habe ich gar nichts auf dem Tisch

13voto

Es gibt auch andere Ursachen. Ich hatte zum Beispiel einen eindeutigen Index mit zwei separaten Fremdschlüsselspalten. Ich musste die fraglichen Fremdschlüssel löschen, bevor ich den eindeutigen Index löschen konnte. (Und natürlich können Sie die Fremdschlüssel danach wieder hinzufügen.)

1 Stimmen

Danke, das war das Problem in meinem Fall.

0 Stimmen

Genau, das Weglassen des eindeutigen Index führte dazu, dass mein Fremdschlüssel auf ein "nicht eindeutiges" Feld verweist, was nicht möglich ist.

6voto

sglessard Punkte 2968

INNODB: Dies könnte so einfach sein wie das Entfernen der Relation vor dem Löschen des Index.

1 Stimmen

In meinem Fall bestand die Beziehung darin, dass ich alles abschloss. Also, Beziehungen entfernen, als nächstes den Index entfernen, als nächstes einen neuen Index erstellen, dann Beziehungen wiederherstellen

2voto

OMG Ponies Punkte 312816

Nach Angaben von dieser Link bezieht sich der Fehler auf die Definition des Primärschlüsselfeldes. Der Fehler bezieht sich nicht auf den Fremdschlüsselindex.

Überprüfen Sie den Primärschlüssel für die COMMENTS Tabelle, um sicherzustellen, dass sie nicht die UNSIGNED Schlüsselwort, während das COMMENTS.id_user Fremdschlüssel das Schlüsselwort UNSIGNED hatte. Dieses Schlüsselwort war die Ursache des Problems - ein inkonsistenter Feldtyp.

Um dies zu beheben, fügen Sie die UNSIGNED Schlüsselwort in die Primärschlüsseldefinition für die Datei COMMENTS Tisch. Oder entfernen Sie die UNSIGNED Schlüsselwort aus der Fremdschlüsseldefinition...

2voto

Etienne Punkte 669

Der Index ist für einen Fremdschlüssel in der Tabelle "user", also Versuchen Sie zunächst diesen Befehl:

SHOW CREATE TABLE my_table

Suchen Sie den Namen der Einschränkung, die dem Index des Fremdschlüssels entspricht,

und versuchen Sie danach den Befehl:

ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode

WARNUNG: Wenn Sie versuchen, den Fremdschlüssel mit dem Fremdschlüsselnamen zu löschen, erhalten Sie eine Fehlermeldung!

0 Stimmen

Dies war eine gute Lösung für mich, scheinen zu sein, dass foreing Schlüssel kann nicht mit dem Drop-Index-Satz entfernt werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X