2012-05-05 36 views
2

MySQL WorkbenchでEER図を使用して8つのテーブルを作成しました。ここでは、プログラムの推奨SQLを使用してテーブルを作成します。ほとんどの場合は動作しますが、外部キーを含むものは動作しません。誰もこれを解決する方法を知っていますか?ここに提案されたコードとエラーメッセージがあります。MySQLワークベンチの外部キー

SQL文:

CREATE TABLE IF NOT EXISTS `webprogrammering`.`Deltagelse` (
    `deltagelseNr` INT NOT NULL AUTO_INCREMENT , 
    `deltagerNr` INT NOT NULL , 
    `Arrid` INT NOT NULL , 
    PRIMARY KEY (`deltagelseNr`) , 
    INDEX `deltagerNr`() , 
    INDEX `Arrid`() , 
    CONSTRAINT `deltagerNr` 
    FOREIGN KEY() 
    REFERENCES `webprogrammering`.`deltagere`() 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Arrid` 
    FOREIGN KEY() 
    REFERENCES `webprogrammering`.`arrangement`() 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 

エラーメッセージLOG:

ERROR 1064:あなたのSQL構文でエラーが発生しています。ライン6

+0

MySQL Workbenchが無効なSQLを生成するようです。説明については、この記事を参照してください:http://stackoverflow.com/questions/10430272/innodb-does-not-accept-foreign-key/10430312#10430312 –

答えて

0
CREATE TABLE IF NOT EXISTS `webprogrammering`.`Deltagelse` (
    `deltagelseNr` INT NOT NULL AUTO_INCREMENT , 
    `deltagerNr` INT NOT NULL , 
    `Arrid` INT NOT NULL , 
    PRIMARY KEY (`deltagelseNr`) , 
    INDEX `deltagerNrIdx` (deltagerNr) , 
    INDEX `ArridIdx` (Arrid) , 
    CONSTRAINT `deltagerNr_fk` 
    FOREIGN KEY (deltagerNr) 
    REFERENCES `webprogrammering`.`deltagere` (referenceField) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Arrid_fk` 
    FOREIGN KEY (Arrid) 
    REFERENCES `webprogrammering`.`arrangement` (referenceField2) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 

変更するフィールドで近く使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください ')、INDEX Arrid()、 CONSTRAINT deltagerNr FOREIGN KEY() REFERE'名前を訂正するためにreferenceField、referenceField2という名前を付けます。