it-swarm.com.de

Hilfe bei: ERROR 1025 (HY000): Fehler beim Umbenennen von .... (Fehlernummer: 150)

Ich erhalte diese Fehlermeldung, wenn ich versuche, einen alter-Tabellenbefehl auszuführen, um eine Spalte zu löschen: ERROR 1025 (HY000): Fehler beim Umbenennen von .... (errno: 150). 

Wenn ich es richtig verstehe, ist dies ein Fremdschlüsselproblem, aber ich habe keine Ahnung, wie ich es beheben kann. Wäre jemand so nett und würde mir sagen, wie ich es schaffen kann.

Der zum Erstellen der Tabelle verwendete Code:

CREATE TABLE categories(
cid INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
assets_id INT NOT NULL,
cat_name VARCHAR(30) NOT NULL,
INDEX(assets_id),
FOREIGN KEY (assets_id) REFERENCES asset(aid) ON UPDATE CASCADE

)
ENGINE=INNODB DEFAULT CHARSET=utf8;

Der alter Befehl:

ALTER TABLE categories DROP COLUMN assets_id;

Die Tabellenkategorien sind vollständig leer. Es gibt also keine Informationen, um die CASCADE-Einschränkungen aufzuheben. Könnten Sie mir helfen, welche Art von Zauberei ich brauche, um die Spalte assets_id zu löschen? Vielen Dank.

36
Henkka

Verwenden Sie SHOW CREATE TABLE categories, um den Namen der Einschränkung anzuzeigen.

Höchstwahrscheinlich wird es categories_ibfk_1 sein

Verwenden Sie den Namen, um zuerst den Fremdschlüssel und dann die Spalte zu löschen:

ALTER TABLE categories DROP FOREIGN KEY categories_ibfk_1;
ALTER TABLE categories DROP COLUMN assets_id;
68
Quassnoi

Für mich war das Problem ein anderes:

Die Seite war (aus Versehen) für alle zugänglich. Das Update-Skript wurde also mehrfach gestartet. Das verursachte Rennbedingungen, die Fehler wie diese auslösten.

-> Stellen Sie sicher, dass die Site nur einmal aufgerufen wird, bis jedes Skript fertig ist!

0
Rabbit