Frage

Ich erhalte diese Fehler in MySQL erstellen. Ich tue:

CREATE TABLE `blogReply` (

    `Id`      INT(24)      NOT NULL AUTO_INCREMENT COMMENT 'Primary Key of This Table',
    `blogId`  INT(24)      NOT NULL COMMENT 'Blog where this reply was posted',
    `userId`  INT(24)      NULL COMMENT 'User the blog was posted by',
    `name`    VARCHAR(100) NULL DEFAULT 'Unknown' COMMENT 'The Name of the user that the reply was posted by',
    `email`   VARCHAR(100) NULL DEFAULT 'Unknown' COMMENT 'The Email of the user that the reply was posted by',
    `http`    VARCHAR(300) NULL DEFAULT 'Unknown' COMMENT 'The Webaddress of the user that the reply was posted by',
    `message` TEXT         NOT NULL COMMENT 'text of the blog',
    `votes`   INT(10)      DEFAULT 0 COMMENT 'Rating of the Blog',
    `ratedBy` TEXT         COMMENT 'People who have already Voted on this blog',
    `dateReg` BIGINT       NOT NULL COMMENT 'Date the User was Registered',

    PRIMARY KEY (`Id`),

    CONSTRAINT `FK_userId` FOREIGN KEY(`userId`)
        REFERENCES `user` (`Id`)
        ON DELETE SET NULL
        ON UPDATE CASCADE,

    CONSTRAINT `FK_blogId` FOREIGN KEY(`blogId`)
        REFERENCES `blog` (`Id`)
        ON DELETE CASCADE
        ON UPDATE CASCADE

) ENGINE = InnoDB;

Irgendwelche Ideen? Die Fehlerzustände: Can't create table './xxxxxxxx/blogReply.frm' (errno: 121)

War es hilfreich?

Lösung

Überprüfen Sie, ob alle Einschränkungen sind wirklich richtig buchstabiert, überprüfen Sie auch, dass es keine anderen Tabellen, die die Einschränkung Namen FK_userId oder FK_blogId verwendet

Andere Tipps

Fehler 121 ist ein Fremdschlüssel Problem. Das erste, was zu prüfen ist, dass Ihre Fremdschlüsseldefinitionen in Ordnung sind (alle Tabellen und Feldnamen korrekt sind, usw.).

Sie können versuchen, Fremdschlüsselprüfungen zu deaktivieren, bevor Sie die Tabelle als auch, wie diese zu erstellen:

SET FOREIGN_KEY_CHECKS = 0;

Wenn das der Nachteil des Werfens Fehler später hat, wenn Sie Ihren Schlüssel überprüft erneut aktivieren (setzen Sie ihn auf 1), jedoch, wenn dies der Fall ist, dann bedeutet es, einige ungültige Datensätze irgendwo haben, die mit der Schaffung stören von der Fremdschlüssel.

Allerdings kann dieses Problem auch auftreten, wenn Sie manuell die Datenbankdateien bewegt worden sind um, wie physisch das data/your_database_name Verzeichnis umbenennen. InnoDB kann so mit dem Tabelle nicht korreliert körperliche Veränderungen, so dass es mucks mit den Interna.

Wenn das ist, was Sie die Lösung haben, die am besten funktioniert, ist die alte Datenbank zu bewegen zurück, wo es war, nehmen Sie einen Dump oder die Ausfuhr von ihm, und machen Sie einen DROP DATABASE auf sie vor dem erneuten Import.

Bitte überprüfen Sie, ob Ihre Fremdschlüssel, die Sie erstellen in allen Aspekten wie Datentyp mit der genannten Tabellenspalte gleich ist. Jeder Fremdschlüssel Name soll für diese Tabellen eindeutig sein, in dem es erstellt wird, soll es nicht in anyother Tabellen verwendet werden. für das oben beschriebene Problem sollte der Fremdschlüsselname „FK_userId“ in keiner anderen Tabelle verwendet werden.

ich dieses Problem in MySQL 5.5 habe aber funktioniert in MySQL 5.6 in Ordnung. Das Problem war, weil der Constraint-Name eindeutig sein aussieht, aber wenn dies ist ein langer Name und wird abgeschnitten, das nicht einzigartig sein, zum Beispiel:

long_constraint_name_1, long_constraint_name_2 kann sich long_constraint_name_

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top