Frage

Was ist mit diesem Befehl alten table falsch ist:

ALTER TABLE `lp` 
ADD COLUMN `RuleId` INT(10) NOT NULL DEFAULT -111 AFTER `Weight` , , 
ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ACTION ON UPDATE NO ACTION,
ADD INDEX `fk_1` (`RuleId` ASC) ;

, wenn ich falle die Zeile

  ADD CONSTRAINT `fk_1` FOREIGN KEY (`RuleId` ) REFERENCES `Rules` (`RuleId` ) ON DELETE NO ...

seine Arbeit,

die Fehler i erhalten ist:

Error Code : 1005
Can't create table '..' (errno: 121)

Wie kann ich einen Fremdschlüssel und Index auf dem gleichen Feld hinzufügen ?

Update:

ich versuche, zwei Abfragen zu trennen, ersten Add INDEX und nach diesen Fremdschlüsseln hinzufügen, fügte der Index aber die zweite Abfrage nicht funktionieren!

, wenn ich den Namen des Fremdschlüssels ändern (wie: ‚fk_2‘) und versuche, es erhalte ich läuft einen Fehler: nicht ein Fremdschlüssel: Fehlercode: 1452 Kann nicht hinzugefügt werden oder ein Kind Zeile aktualisieren

War es hilfreich?

Lösung

Sie zuerst den Index und die zweite die Fremdschlüssel erstellen. MySQL benötigt einen Index den Fremdschlüssel zu erstellen, das ist, warum Sie den Index zuerst erstellen haben. Verwenden eigene Aussagen auch.

Andere Tipps

Ich hatte das gleiche Problem genau.

Was ich habe, ist, dass Sie keinen Fremdschlüssel hinzufügen können, wenn es bereits ein anderen Fremdschlüssel in der Datenbank vorhanden ist, der den gleichen Namen hat. Selbst wenn der andere Fremdschlüssel auf einem anderen Tisch.

  

ERROR 1005 (HY000): Can not create table './MyDB/#sql-e4a_c715.frm' (errno: 121)   Wie oben erwähnt, werden Sie diese Nachricht erhalten, wenn Sie eine Einschränkung mit einem Namen hinzuzufügen, sind versucht, die bereits woanders verwendet wird.

(Aus hier )

So einfach benennen Sie sie um etwas zufällig zu überprüfen, ob ich richtig bin ..

Ich habe diesen Fehler nach Schema DDLs von N Django Kombination Apps den "manage.py sqlall" Befehl.

Ich fand, dass die MySQL-DDL die Aussagen erfordert von gruppiert werden Art in dieser Reihenfolge. Insbesondere alle ALTER TABLE ... ADD ... FOREIGN KEY ... muss auftreten letzten oder MySQL wird diesen Fehler erhöhen.

  1. CREATE TABLE ...
  2. INDEX CREATE ...
  3. ALTER TABLE Tabellenname ADD CONSTRAINT Name FOREIGN KEY ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top