Question

En utilisant l'outil mysqladmin, je tente de créer une table. L'outil génère l'instruction SQL et replorts puis « Impossible de créer la table » sans autre indice sur quelle erreur il est!

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;

aide quelqu'un peut?

Était-ce utile?

La solution

Le CREER TABLE fonctionne pour moi si je laisse de côté les références de 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 enclin à croire que C121535_vubridge.MEMBERS n'existe pas déjà. besoins de C121535_vubridge.MEMBERS à créer avant l'instruction CREATE TABLE pour la table PRODUITS est exécuté.

Autres conseils

Il suffit de diviser la création d'une table et essayer une partie à l'époque. De cette façon, vous devriez être en mesure d'identifier une seule ligne qu'il échoue sur.

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? Dans le cas contraire, ce symbole peut être omis et InnoDB attribuera automatiquement.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top