wake-up-neo.com

# 1025 - Fehler beim Umbenennen von './database/#sql-2e0f_1254ba7' in './database/table' (Fehlernummer: 150)

Ich versuche also, einen Primärschlüssel zu einer der Tabellen in meiner Datenbank hinzuzufügen. Im Moment hat es einen Primärschlüssel wie diesen:

PRIMARY KEY (user_id, round_number)

Wobei user_id ein Fremdschlüssel ist.

Ich versuche das zu ändern:

PRIMARY KEY (user_id, round_number, created_at)

Ich mache dies in phpmyadmin, indem ich auf das Primärschlüsselsymbol in der Tabellenstrukturansicht klicke.

Dies ist der Fehler, den ich erhalte:

#1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150)

Es ist eine MySQL-Datenbank mit InnoDB-Tabellen-Engine.

77
Richard Knop

Möglicherweise gibt es eine weitere Tabelle mit einem Fremdschlüssel, der auf den zu ändernden Primärschlüssel verweist.

Um herauszufinden, welche Tabelle den Fehler verursacht hat, können Sie SHOW ENGINE INNODB STATUS und dann schauen Sie sich die LATEST FOREIGN KEY ERROR Sektion.

133
Ike Walker

Wie gesagt musst du die FKs vorher entfernen. Mach es auf MySQL so:

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;

ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
32

Für diejenigen, die zu dieser Frage über Google gelangen, kann dieser Fehler auch auftreten, wenn Sie versuchen, ein Feld umzubenennen, das als Fremdschlüssel fungiert.

23
Dave C

Um dies in PHPMyAdmin oder mit MySQL zu umgehen, müssen Sie zuerst die Fremdschlüsseleinschränkung entfernen, bevor Sie das Attribut umbenennen.

(Für PHPMyAdmin-Benutzer: Um FK-Einschränkungen in PHPMyAdmin zu entfernen, wählen Sie das Attribut aus und klicken Sie in der Symbolleiste unterhalb der Tabellenstruktur auf "Beziehungsansicht" neben "Druckansicht".)

13
LazerSharks

Ich hatte dieses Problem, es ist für Fremdschlüssel

Klicken Sie auf Relation View (wie im Bild unten) und suchen Sie den Namen des Feldes, das Sie entfernen möchten. Klicken Sie dann unter Foreign key constraint (INNODB) auf Spalte, setzen Sie einfach die Auswahl auf nichts! Bedeutet kein Fremdschlüssel

enter image description here

Hoffe das klappt!

4
M98

Wenn Sie versuchen, eine Spalte zu löschen, die ein AUSLÄNDISCHER SCHLÜSSEL ist, müssen Sie den richtigen Namen finden, der nicht der Spaltenname ist. Beispiel: Wenn ich versuche, das Serverfeld in der Alarmtabelle zu löschen, das ein Fremdschlüssel für die Servertabelle ist.

  1. SHOW CREATE TABLE alarm; Suchen Sie nach der Zeile CONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`).
  2. ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
  3. ALTER TABLE `alarm` DROP `server_id`

Dadurch wird der Fremdschlüsselserver aus der Alarmtabelle gelöscht.

4
Bonnie Varghese

Wenn Sie einen Fremdschlüssel hinzufügen und dieser Fehler auftritt, ist möglicherweise der Wert in der untergeordneten Tabelle nicht in der übergeordneten Tabelle vorhanden.

Angenommen, für die Spalte, zu der der Fremdschlüssel hinzugefügt werden muss, sind alle Werte auf 0 gesetzt, und der Wert ist in der Tabelle, auf die Sie verweisen, nicht verfügbar.

Sie können einen Wert festlegen, der in der übergeordneten Tabelle vorhanden ist, und dann einen Fremdschlüssel hinzufügen, der für mich funktioniert hat.

0
StateLess