将模型同步到服务器时,MySQL Workbench中的错误1064

时间:2016-09-23 18:12:13

标签: mysql mysql-workbench

我是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 

我希望能够知道出了什么问题。那么在你的答案中,你能否告诉我错误的可能原因,以便我可以避免它?

1 个答案:

答案 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]