MySQL Workbench中的正向工程输出错误1064

时间:2018-10-06 13:50:38

标签: mysql database mysql-workbench forward-engineer

这是MySQL Workbench在进行正向工程时创建的脚本:

Executing SQL script in server
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '
  CONSTRAINT `fk_MultiStep_Dialogues_Status1`
    FOREIGN KEY (`Status`)
    RE' at line 19
SQL Code:
        -- -----------------------------------------------------
        -- Table `DialogueFlowDB`.`MultiStep_Dialogues`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `DialogueFlowDB`.`MultiStep_Dialogues` (
          `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
          `MultiStep_Dialogue` CHAR(255) NOT NULL,
          `Data_Items` VARCHAR(1000) NULL,
          `Nodes` VARCHAR(1000) NULL,
          `Node_Links` VARCHAR(1000) NULL,
          `Comments` VARCHAR(1000) NULL,
          `Status` INT UNSIGNED NOT NULL,
          `Issue` INT NOT NULL,
          `LO_Name` CHAR(255) NULL,
          `LO_Description` CHAR(255) NULL,
          `LO_Condition` VARCHAR(1000) NULL,
          `LO_Variables` VARCHAR(1000) NULL,
          `LO_List` INT NULL,
          PRIMARY KEY (`ID`),
          INDEX `fk_MultiStep_Dialogues_Status1_idx` (`Status` ASC) VISIBLE,
          CONSTRAINT `fk_MultiStep_Dialogues_Status1`
            FOREIGN KEY (`Status`)
            REFERENCES `DialogueFlowDB`.`Status` (`ID`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB

SQL script execution finished: statements: 6 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

这是输出:

Thread thread = new Thread();

我在线阅读了一下,问题可能出在外键上(尽管我检查了一下,看起来还不错...)或与engine = InnoDB声明有关。我尝试使用this question中的答案,但是它不起作用或我不太理解答案(我将ENGINE = InnoDB;换成ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci;)我也检查我的mysql版本,我使用10.1.35-MariaDB,它应该具有不可见的索引(如我链接的问题的另一个答案所述)。

我对mySQL从未有过任何经验,所以如果这是一个非常简单的问题,我感到抱歉。感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

好的,所以有两个不同的问题。 DialogueFlow表中Unsigned Int“ Status”的默认值为“ Created”(我从使用ENUM更改为使用外键,忘了删除旧的默认值),所以它是

  

Status INT UNSIGNED NOT NULL DEFAULT'Created'

另一个问题似乎与索引有关。删除所有内容时:

  

显示索引fk_MultiStep_Dialogues_Status1_idxStatus ASC)

     

显示索引fk_Nodes_MultiStep_Dialogues_idxMultiStep_Dialogue ASC)

     

显示索引fk_Nodes_Node_Types1_idxNode_Type ASC)

以此类推,它似乎可以工作。我真的不明白为什么会发生这种情况,但是现在我只删除外键上的索引并稍后进行修复。