我在 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: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') , INDEX
Arrid
() , CONSTRAINTdeltagerNr
FOREIGN KEY () REFERE' at line 6
最佳答案
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 更改为正确的名称。
关于mysql - MySQL Workbench 中的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463206/