質問

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;

誰かが助けることができますか?

役に立ちましたか?

解決

外部のキー参照を省略した場合、作成テーブルは私のために機能します。

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.MEMBERS 製品テーブルの作成テーブルステートメントが実行される前に作成する必要があります。

他のヒント

作成テーブルを分割して、その時点で1つの部分を試してみてください。これにより、失敗した単一の行を識別できるはずです。

リファレンスマニュアルでは、制約条項に記号のサブクラースが与えられている場合(あなたの場合、各句の外部キーの前の背面引用文字列が与えられている場合、 FK_prAuthorFK_Sponsor)データベースを介して一意である必要があります。彼らは?そうでない場合、そのシンボルを省略し、InnoDBが自動的に割り当てられます。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top