質問

[OK]を、ので、私は、インデックスと外部キーでMySQLでテーブルを作成しています。私は、MySQL Workbenchは、テーブルを作成し、(私はすぐに手でSQLコードを書くよりも優れた視覚的なDB環境で行う)、それは前方にSQLスクリプトを作成エンジニアリング持って使用します。

問題は、私は、MySQLにSQLスクリプトをインポートするときに、私は古典的なERORを得る何倍です

#1005 - Can't create table 'db.tablename' (errno: 121) 

私はこの問題を毎回、関連する通常のインデックス/外部キーを見つけ出すことができたが、今私はそれを毎回修正することでイライラし始めています。私は本当に(MySQLの製品は、独自のデータベースのSQLコードを作成している場合は特に)、問題が何であるかを理解していません。以下は、一般的に問題が発生するいくつかのコードです。

CREATE  TABLE IF NOT EXISTS `db`.`groupMembers` (
  `groupMembersID` INT NOT NULL AUTO_INCREMENT ,
  `groupID` INT NOT NULL ,
  `userID` INT NULL ,
  PRIMARY KEY (`groupMembersID`) ,
  INDEX `group` (`groupID` ASC) ,
  INDEX `user` (`userID` ASC) ,
  CONSTRAINT `group`
    FOREIGN KEY (`groupID` )
    REFERENCES `db`.`groups` (`groupsID` )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `user`
    FOREIGN KEY (`userID` )
    REFERENCES `db`.`users` (`usersID` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;

エラーは、通常、最初のINDEX定義から来ている - 私はインデックス定義を取り出した場合であっても、私は最初の外部キー制約定義でエラーが発生します。私がチェックした、および外部キーのリモート列とローカル列は同じデータ型とサイズです。

役に立ちましたか?

解決

"エラー番号121が重複キーエラーを意味し、"

制約は、データベース内で一意の名前を持つ必要があり、あなたはあなたのFK名を変更したい場合があります。これと同様に、FK_groupMembers_groupFK_groupMembers_userます。

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