3

我在 MySQL Workbench 中制作了八个带有 EER 图的表。现在我使用程序建议的 SQL 来创建表。它适用于大多数人,但不适用于包含外键的人。有谁知道如何解决这个问题?这是建议的代码和错误消息。

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

错误消息日志:

ERROR 1064:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 6 行的 ') 、 INDEX Arrid() 、 CONSTRAINT deltagerNr FOREIGN KEY () REFERE'附近使用正确的语法

4

1 回答 1

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

将字段名称 referenceField、referenceField2 更改为正确的名称。

于 2012-05-05T17:31:11.807 回答