1

mySQLAdmin ツールを使用して、テーブルを作成しようとしました。ツールは SQL ステートメントを生成し、「テーブルを作成できません」を再表示しますが、それがどのようなエラーであるかについての手がかりはありません。

ここにあります :

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;

誰か助けてくれませんか?

4

3 に答える 3

3

外部キー参照を省略した場合、CREATE TABLE が機能します。

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

...だから、私はそれC121535_vubridge.MEMBERSがまだ存在しないと信じがちです。C121535_vubridge.MEMBERSPRODUCTS テーブルの CREATE TABLE ステートメントを実行する前に作成する必要があります。

于 2010-12-02T22:01:43.130 に答える
0

create table を分割して、一度に 1 つずつ試してみてください。このようにして、失敗した単一の回線を識別できるはずです。

于 2010-12-02T22:00:12.677 に答える
0

リファレンス マニュアルでは、CONSTRAINT 句にシンボル サブ句が指定されている場合 (この場合、各句の FOREIGN KEY の前の逆引用符で囲まれた文字列FK_prAuthorFK_Sponsor) はデータベース全体で一意である必要があることに注意してください。彼らは?そうでない場合、そのシンボルは省略でき、InnoDB は自動的に割り当てます。

同様に、FK が参照するテーブルには、この create ステートメントが期待する構造がない場合があります。

于 2010-12-02T22:06:15.827 に答える