なぜこのmySQLはテーブルステートメントを作成するのですか?
-
30-09-2019 - |
質問
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_prAuthor
と FK_Sponsor
)データベースを介して一意である必要があります。彼らは?そうでない場合、そのシンボルを省略し、InnoDBが自動的に割り当てられます。
同様に、FKSが参照するテーブルには、この作成ステートメントが期待する構造がない場合があります。
所属していません StackOverflow