2010-12-02 10 views
1

Mit dem mySQLAdmin-Tool versuche ich eine Tabelle zu erstellen. Das Tool generiert die SQL-Anweisung und erstellt dann eine "Tabelle kann nicht erstellt werden" ohne weitere Hinweise darauf, um welchen Fehler es sich handelt!Warum schlägt diese MySQL Create Table-Anweisung fehl?

Hier ist sie:

CREATE TABLE `C121535_vubridge`.`Products` (
    `pr_ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 
    `pr_Name` VARCHAR(45) NOT NULL, 
    `pr_Type` VARCHAR(2) NOT NULL COMMENT 'H=Hand Series V=VuBridge software E=Event Subs S=Sponsoring', 
    `pr_AuthorID` INTEGER UNSIGNED COMMENT '= m_ID (for Bridge Hand Series', 
    `pr_SponsorID` INTEGER UNSIGNED NOT NULL, 
    `pr_DateCreation` DATETIME NOT NULL, 
    `pr_Price` FLOAT NOT NULL, 
    `pr_DescriptionText` TEXT, 
    `pr_Description` VARCHAR(245), 
    PRIMARY KEY (`pr_ID`), 
    CONSTRAINT `FK_prAuthor` FOREIGN KEY `FK_prAuthor` (`pr_AuthorID`) 
    REFERENCES `Members` (`m_ID`) 
    ON DELETE SET NULL 
    ON UPDATE NO ACTION, 
    CONSTRAINT `FK_Sponsor` FOREIGN KEY `FK_Sponsor` (`pr_SponsorID`) 
    REFERENCES `Members` (`m_ID`) 
    ON DELETE SET NULL 
    ON UPDATE NO ACTION 
) ENGINE = InnoDB; 

Kann jemand helfen?

Antwort

3

Die CREATE TABLE funktioniert für mich, wenn ich die Fremdschlüssel-Referenzen auslassen:

CREATE TABLE `Products` (
`pr_ID` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 
`pr_Name` VARCHAR(45) NOT NULL, 
`pr_Type` VARCHAR(2) NOT NULL COMMENT 'H=Hand Series V=VuBridge software E=Event Subs S=Sponsoring', 
`pr_AuthorID` INTEGER UNSIGNED COMMENT '= m_ID (for Bridge Hand Series', 
`pr_SponsorID` INTEGER UNSIGNED NOT NULL, 
`pr_DateCreation` DATETIME NOT NULL, 
`pr_Price` FLOAT NOT NULL, 
`pr_DescriptionText` TEXT, 
`pr_Description` VARCHAR(245), 
PRIMARY KEY (`pr_ID`) 
) 

... so geneigt Ich bin zu glauben, dass C121535_vubridge.MEMBERS nicht bereits vorhanden ist. C121535_vubridge.MEMBERS muss erstellt werden, bevor die Anweisung CREATE TABLE für die Tabelle PRODUCTS ausgeführt wird.

0

Teilen Sie einfach die Tabelle erstellen und versuchen Sie einen Teil zu der Zeit. Auf diese Weise sollten Sie in der Lage sein, eine einzelne Zeile zu identifizieren, bei der ein Fehler auftritt.

+0

Sehr wahrscheinlich bestehende Daten fehlschlagen eine Einschränkung, oder gibt das einen separaten Fehler? – Orbling

0

ich im Referenzhandbuch Sie zu beachten, dass, wenn ein Symbol Subklausel für die CONSTRAINT-Klausel angegeben ist (in Ihrem Fall die Back-Strings in Anführungszeichen vor Fremdschlüssel in jeder Klausel, FK_prAuthor und FK_Sponsor) eindeutig über die Datenbank sein . Sind sie? Wenn nicht, kann dieses Symbol weggelassen werden und InnoDB wird dann automatisch zuweisen.

In ähnlicher Weise haben die Tabellen, auf die Ihre FKs verweisen, möglicherweise nicht die Struktur, die diese create-Anweisung erwartet.

Verwandte Themen