Ich habe eine Tabelle, deren Primärschlüssel in mehreren anderen Tabellen verwendet wird und die mehrere Fremdschlüssel für andere Tabellen enthält.
CREATE TABLE location (
locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
...
) ENGINE = InnoDB;
CREATE TABLE assignment (
assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
locationID INT NOT NULL,
FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID)
...
) ENGINE = InnoDB;
CREATE TABLE assignmentStuff (
...
assignmentID INT NOT NULL,
FOREIGN KEY assignmentIDX (assignmentID) REFERENCES assignment (assignmentID)
) ENGINE = InnoDB;
Das Problem ist, dass beim Versuch, eine der Fremdschlüsselspalten (z. B. locationIDX) zu löschen, ein Fehler auftritt.
"FEHLER 1025 (HY000): Fehler beim Umbenennen"
Wie kann ich die Spalte in der obigen Zuordnungstabelle löschen, ohne diesen Fehler zu erhalten?
SHOW CREATE TABLE footable;
Sie diese Option, um den Namen der Einschränkung anzuzeigen. Es ist nicht der Name der Spalte an sich. Danke für die Antwort!Die Fremdschlüssel dienen der Datenintegrität, sodass Sie eine Spalte nicht löschen können, solange sie Teil eines Fremdschlüssels ist. Sie müssen zuerst den Schlüssel fallen lassen.
Ich würde denken, dass die folgende Abfrage es tun würde:
quelle
Wie bereits erwähnt, können Sie einen FK problemlos löschen. Ich habe jedoch gerade bemerkt, dass es notwendig sein kann, den SCHLÜSSEL selbst irgendwann fallen zu lassen. Wenn Sie eine Fehlermeldung haben, um einen anderen Index wie den letzten zu erstellen, meine ich mit demselben Namen, wäre es nützlich, alles zu löschen, was mit diesem Index zusammenhängt.
quelle
Überprüfen Sie, wie der Name CONSTRAINT und der Name FOREIGN KEY lauten:
Entfernen Sie sowohl den Namen CONSTRAINT als auch den Namen FOREIGN KEY:
Hoffe das hilft!
quelle
Hier ist eine Möglichkeit, die Fremdschlüsseleinschränkung aufzuheben. Es wird funktionieren. ALTER TABLE
location
.location_id
DROP FOREIGN KEYlocation_ibfk_1
;quelle
Hey, ich bin einer Sequenz oben gefolgt und habe eine Lösung gefunden.
Sie erhalten FK Constrain Name wie
Jetzt müssen Sie diese Einschränkungen entfernen. von alter table commantd
Dann lassen Sie die Tabellenspalte fallen,
quelle
Normalerweise wird dieser Fehler angezeigt, wenn Ihre Tabellen die InnoDB-Engine verwenden. In diesem Fall müssten Sie den Fremdschlüssel löschen, dann die Änderungstabelle ausführen und die Spalte löschen.
Der schwierige Teil ist jedoch, dass Sie den Fremdschlüssel nicht mit dem Spaltennamen löschen können, sondern stattdessen den Namen suchen müssen, der zum Indizieren verwendet wird. Um dies zu finden, geben Sie die folgende Auswahl ein:
SHOW CREATE TABLE-Region; Dies sollte Ihnen eine Zeile anzeigen. Klicken Sie in der linken oberen Ecke auf die Option +, klicken Sie auf die Volltext-Raio-Schaltfläche und dann auf Los. Dort erhalten Sie den Namen des Index.
CONSTRAINT region_ibfk_1 AUSLÄNDISCHER SCHLÜSSEL (country_id) REFERENZEN country (id) ON DELETE NO ACTION ON UPDATE NO ACTION Geben Sie jetzt einfach Folgendes aus:
alter table region drop fremdschlüssel region_ibfk_1;
oder
Einfacher geben Sie einfach Folgendes ein: - alter table TableName drop fremdschlüssel TableName_ibfk_1 ;
Denken Sie daran, dass Sie nach Ihrem Tabellennamen nur _ibfk_1 hinzufügen müssen , um Folgendes zu erstellen : - Tabellenname _ibfk_1
quelle
Sie können die Fremdschlüsselspalte nicht löschen, da auf sie aus der Tabelle verwiesen wird
assignmentStuff
. Sie sollten also zuerst die Fremdschlüsseleinschränkung löschenassignmentStuff.assignmentIDX
.Eine ähnliche Frage bereits gestellt hier . Überprüfen Sie auch hier für weitere Informationen.
quelle
Versuche dies:
quelle
Schritt 1:
show create table vendor_locations;
Schritt 2:
ALTER TABLE vendor_locations drop foreign key vendor_locations_ibfk_1;
es hat bei mir funktioniert.
quelle
Zuerst muss der tatsächliche Einschränkungsname durch diese Abfrage abgerufen werden
Diese Abfrage führt dazu, dass der Name des Fremdschlüssels eingeschränkt wird. Unter der Abfrage wird er nun gelöscht.
Die letzte Nummer im obigen Einschränkungsnamen hängt davon ab, wie viele Fremdschlüssel Sie in der Tabelle haben
quelle