MySQLはインデックスエラーでテーブルを作成します。
-
19-09-2019 - |
質問
[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_group
とFK_groupMembers_user
ます。
所属していません StackOverflow