这是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从未有过任何经验,所以如果这是一个非常简单的问题,我感到抱歉。感谢您的帮助:)
答案 0 :(得分:0)
好的,所以有两个不同的问题。 DialogueFlow表中Unsigned Int“ Status”的默认值为“ Created”(我从使用ENUM更改为使用外键,忘了删除旧的默认值),所以它是
Status
INT UNSIGNED NOT NULL DEFAULT'Created'
另一个问题似乎与索引有关。删除所有内容时:
显示索引
fk_MultiStep_Dialogues_Status1_idx
(Status
ASC)显示索引
fk_Nodes_MultiStep_Dialogues_idx
(MultiStep_Dialogue
ASC)显示索引
fk_Nodes_Node_Types1_idx
(Node_Type
ASC)
以此类推,它似乎可以工作。我真的不明白为什么会发生这种情况,但是现在我只删除外键上的索引并稍后进行修复。