我是MySQL新手,之前只使用过Microsoft Access for SQL。当我尝试将模型添加到服务器([Database] - > [Synchronize Model])时,自动生成的SQL代码会抛出此错误
Executing SQL script in server
ERROR: 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 ')
REFERENCES `medicineproblems`.`SleepTimes` ()
ON DELETE NO ACTION
' at line 7
SQL Code:
CREATE TABLE IF NOT EXISTS `medicineproblems`.`Records` (
`Date` DATE NOT NULL,
`SleepDuration` DECIMAL NOT NULL DEFAULT 0,
`MoodAverage` DECIMAL NOT NULL DEFAULT 0,
PRIMARY KEY (`Date`),
CONSTRAINT `SleepDuration`
FOREIGN KEY ()
REFERENCES `medicineproblems`.`SleepTimes` ()
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `MoodAverage`
FOREIGN KEY ()
REFERENCES `medicineproblems`.`Mood` ()
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
SQL script execution finished: statements: 5 succeeded, 1 failed
Fetching back view definitions in final form.
Nothing to fetch
我希望能够知道出了什么问题。那么在你的答案中,你能否告诉我错误的可能原因,以便我可以避免它?
答案 0 :(得分:1)
您缺少要在该表上引用的列名以及将引用的列,因此错误指向了该列。以下行
FOREIGN KEY ()
REFERENCES `medicineproblems`.`SleepTimes` ()
应该是
FOREIGN KEY(some_column_name)
REFERENCES `medicineproblems`.`SleepTimes`(some_column_name)
同样,您应该在CREATE TABLE
语法
CONSTRAINT `MoodAverage`
FOREIGN KEY ()
REFERENCES `medicineproblems`.`Mood` ()
有关详细信息,请参阅MySQL Documentation。正确的语法是:
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]