2010-12-02 8 views
1

En utilisant l'outil mySQLAdmin, j'essaie de créer une table. L'outil génère l'instruction SQL, puis réplique un "Impossible de créer une table" sans autre indice sur quelle erreur il est!Pourquoi cette instruction MySQL Create Table échoue?

Ici, il est:

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; 

Quelqu'un peut-il aider?

Répondre

3

CREATE TABLE fonctionne pour moi si je laisse de côté les références clés étrangères:

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`) 
) 

... donc je suis porté à croire que C121535_vubridge.MEMBERS n'existe pas déjà. C121535_vubridge.MEMBERS doit être créé avant l'instruction CREATE TABLE pour la table PRODUITS est exécuté.

0

vient de rompre la table créer et essayer une partie à l'époque. De cette façon, vous devriez être capable d'identifier une seule ligne sur laquelle elle échoue.

+0

données existantes ne probablement tout à fait une contrainte, ou ne donne que d'une erreur séparée? – Orbling

0

Je note dans le manuel de référence que si un paragraphe de symbole est donné pour la clause CONSTRAINT (dans votre cas, les chaînes entre guillemets en arrière-avant FOREIGN KEY dans chaque clause, FK_prAuthor et FK_Sponsor) doivent être uniques sur la base de données . Sont-ils? Si ce n'est pas le cas, ce symbole peut être omis et InnoDB attribuera alors automatiquement.

De même, les tables de vos FKs se réfèrent peuvent ne pas avoir la structure que cette create attend.

Questions connexes