mysql工作台输出错误1064中的数据库转发工程

uidvcgyl  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(394)

这是mysql workbench在正向工程时创建的脚本:

  1. -- MySQL Workbench Forward Engineering
  2. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  3. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  4. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
  5. -- -----------------------------------------------------
  6. -- Schema DialogueFlowDB
  7. -- -----------------------------------------------------
  8. -- -----------------------------------------------------
  9. -- Schema DialogueFlowDB
  10. -- -----------------------------------------------------
  11. CREATE SCHEMA IF NOT EXISTS `DialogueFlowDB` DEFAULT CHARACTER SET utf8 ;
  12. USE `DialogueFlowDB` ;
  13. -- -----------------------------------------------------
  14. -- Table `DialogueFlowDB`.`Status`
  15. -- -----------------------------------------------------
  16. CREATE TABLE IF NOT EXISTS `DialogueFlowDB`.`Status` (
  17. `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  18. `Status` CHAR(255) NOT NULL,
  19. PRIMARY KEY (`ID`))
  20. ENGINE = InnoDB;
  21. -- -----------------------------------------------------
  22. -- Table `DialogueFlowDB`.`MultiStep_Dialogues`
  23. -- -----------------------------------------------------
  24. CREATE TABLE IF NOT EXISTS `DialogueFlowDB`.`MultiStep_Dialogues` (
  25. `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  26. `MultiStep_Dialogue` CHAR(255) NOT NULL,
  27. `Data_Items` VARCHAR(1000) NULL,
  28. `Nodes` VARCHAR(1000) NULL,
  29. `Node_Links` VARCHAR(1000) NULL,
  30. `Comments` VARCHAR(1000) NULL,
  31. `Status` INT UNSIGNED NOT NULL,
  32. `Issue` INT NOT NULL,
  33. `LO_Name` CHAR(255) NULL,
  34. `LO_Description` CHAR(255) NULL,
  35. `LO_Condition` VARCHAR(1000) NULL,
  36. `LO_Variables` VARCHAR(1000) NULL,
  37. `LO_List` INT NULL,
  38. PRIMARY KEY (`ID`),
  39. INDEX `fk_MultiStep_Dialogues_Status1_idx` (`Status` ASC) VISIBLE,
  40. CONSTRAINT `fk_MultiStep_Dialogues_Status1`
  41. FOREIGN KEY (`Status`)
  42. REFERENCES `DialogueFlowDB`.`Status` (`ID`)
  43. ON DELETE NO ACTION
  44. ON UPDATE NO ACTION)
  45. ENGINE = InnoDB;
  46. -- -----------------------------------------------------
  47. -- Table `DialogueFlowDB`.`Node_Types`
  48. -- -----------------------------------------------------
  49. CREATE TABLE IF NOT EXISTS `DialogueFlowDB`.`Node_Types` (
  50. `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  51. `Node_Type` CHAR(255) NOT NULL,
  52. PRIMARY KEY (`ID`))
  53. ENGINE = InnoDB;
  54. -- -----------------------------------------------------
  55. -- Table `DialogueFlowDB`.`Variables`
  56. -- -----------------------------------------------------
  57. CREATE TABLE IF NOT EXISTS `DialogueFlowDB`.`Variables` (
  58. `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  59. `Variable` CHAR(255) NOT NULL,
  60. `Variable_ID` CHAR(255) NOT NULL,
  61. `System_Variable` CHAR(255) NULL,
  62. `Values_per_Item` ENUM('Single', 'Multiple') NOT NULL DEFAULT 'Single',
  63. `MultiStep_Dialogue` INT UNSIGNED NOT NULL,
  64. `Input_Values` VARCHAR(1000) NULL,
  65. `Comments` VARCHAR(1000) NULL,
  66. PRIMARY KEY (`ID`),
  67. INDEX `fk_Variables_MultiStep_Dialogues1_idx` (`MultiStep_Dialogue` ASC) VISIBLE,
  68. CONSTRAINT `fk_Variables_MultiStep_Dialogues1`
  69. FOREIGN KEY (`MultiStep_Dialogue`)
  70. REFERENCES `DialogueFlowDB`.`MultiStep_Dialogues` (`ID`)
  71. ON DELETE NO ACTION
  72. ON UPDATE NO ACTION)
  73. ENGINE = InnoDB;
  74. -- -----------------------------------------------------
  75. -- Table `DialogueFlowDB`.`Nodes`
  76. -- -----------------------------------------------------
  77. CREATE TABLE IF NOT EXISTS `DialogueFlowDB`.`Nodes` (
  78. `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  79. `Node` CHAR(255) NOT NULL,
  80. `Node_ID` CHAR(255) NOT NULL,
  81. `Node_Sequence` ENUM('End', 'Middle', 'Start') NOT NULL,
  82. `Node_Type` INT UNSIGNED NOT NULL,
  83. `XPosition` INT NOT NULL DEFAULT 0,
  84. `YPosition` INT NOT NULL DEFAULT 0,
  85. `Answer` VARCHAR(1000) NOT NULL,
  86. `Data_Item` INT UNSIGNED NULL,
  87. `Status` INT UNSIGNED NOT NULL DEFAULT 'Created',
  88. `MultiStep_Dialogue` INT UNSIGNED NOT NULL,
  89. `Comments` VARCHAR(1000) NULL,
  90. `Previous_Node_Links` VARCHAR(1000) NULL,
  91. `Next_Node_Link` VARCHAR(100) NULL,
  92. PRIMARY KEY (`ID`),
  93. INDEX `fk_Nodes_MultiStep_Dialogues_idx` (`MultiStep_Dialogue` ASC) VISIBLE,
  94. INDEX `fk_Nodes_Node_Types1_idx` (`Node_Type` ASC) VISIBLE,
  95. INDEX `fk_Nodes_Variables1_idx` (`Data_Item` ASC) VISIBLE,
  96. INDEX `fk_Nodes_Status1_idx` (`Status` ASC) VISIBLE,
  97. CONSTRAINT `fk_Nodes_MultiStep_Dialogues`
  98. FOREIGN KEY (`MultiStep_Dialogue`)
  99. REFERENCES `DialogueFlowDB`.`MultiStep_Dialogues` (`ID`)
  100. ON DELETE NO ACTION
  101. ON UPDATE NO ACTION,
  102. CONSTRAINT `fk_Nodes_Node_Types1`
  103. FOREIGN KEY (`Node_Type`)
  104. REFERENCES `DialogueFlowDB`.`Node_Types` (`ID`)
  105. ON DELETE NO ACTION
  106. ON UPDATE NO ACTION,
  107. CONSTRAINT `fk_Nodes_Status1`
  108. FOREIGN KEY (`Status`)
  109. REFERENCES `DialogueFlowDB`.`Status` (`ID`)
  110. ON DELETE NO ACTION
  111. ON UPDATE NO ACTION,
  112. CONSTRAINT `fk_Nodes_Variables1`
  113. FOREIGN KEY (`Data_Item`)
  114. REFERENCES `DialogueFlowDB`.`Variables` (`ID`)
  115. ON DELETE NO ACTION
  116. ON UPDATE NO ACTION)
  117. ENGINE = InnoDB;
  118. -- -----------------------------------------------------
  119. -- Table `DialogueFlowDB`.`Node_Links`
  120. -- -----------------------------------------------------
  121. CREATE TABLE IF NOT EXISTS `DialogueFlowDB`.`Node_Links` (
  122. `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  123. `Node_Link` CHAR(255) NOT NULL,
  124. `MultiStep_Dialogue` INT UNSIGNED NOT NULL,
  125. `From_Node` INT UNSIGNED NOT NULL,
  126. `To_Node` INT UNSIGNED NOT NULL,
  127. `Status` INT UNSIGNED NOT NULL,
  128. `Comments` VARCHAR(1000) NULL,
  129. PRIMARY KEY (`ID`),
  130. INDEX `fk_Node_Links_Nodes1_idx` (`From_Node` ASC) VISIBLE,
  131. INDEX `fk_Node_Links_MultiStep_Dialogues1_idx` (`MultiStep_Dialogue` ASC) VISIBLE,
  132. INDEX `fk_Node_Links_Nodes2_idx` (`To_Node` ASC) VISIBLE,
  133. INDEX `fk_Node_Links_Status1_idx` (`Status` ASC) VISIBLE,
  134. CONSTRAINT `fk_Node_Links_Nodes1`
  135. FOREIGN KEY (`From_Node`)
  136. REFERENCES `DialogueFlowDB`.`Nodes` (`ID`)
  137. ON DELETE NO ACTION
  138. ON UPDATE NO ACTION,
  139. CONSTRAINT `fk_Node_Links_MultiStep_Dialogues1`
  140. FOREIGN KEY (`MultiStep_Dialogue`)
  141. REFERENCES `DialogueFlowDB`.`MultiStep_Dialogues` (`ID`)
  142. ON DELETE NO ACTION
  143. ON UPDATE NO ACTION,
  144. CONSTRAINT `fk_Node_Links_Nodes2`
  145. FOREIGN KEY (`To_Node`)
  146. REFERENCES `DialogueFlowDB`.`Nodes` (`ID`)
  147. ON DELETE NO ACTION
  148. ON UPDATE NO ACTION,
  149. CONSTRAINT `fk_Node_Links_Status1`
  150. FOREIGN KEY (`Status`)
  151. REFERENCES `DialogueFlowDB`.`Status` (`ID`)
  152. ON DELETE NO ACTION
  153. ON UPDATE NO ACTION)
  154. ENGINE = InnoDB;
  155. SET SQL_MODE=@OLD_SQL_MODE;
  156. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  157. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

这是输出:

  1. Executing SQL script in server
  2. 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 '
  3. CONSTRAINT `fk_MultiStep_Dialogues_Status1`
  4. FOREIGN KEY (`Status`)
  5. RE' at line 19
  6. SQL Code:
  7. -- -----------------------------------------------------
  8. -- Table `DialogueFlowDB`.`MultiStep_Dialogues`
  9. -- -----------------------------------------------------
  10. CREATE TABLE IF NOT EXISTS `DialogueFlowDB`.`MultiStep_Dialogues` (
  11. `ID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  12. `MultiStep_Dialogue` CHAR(255) NOT NULL,
  13. `Data_Items` VARCHAR(1000) NULL,
  14. `Nodes` VARCHAR(1000) NULL,
  15. `Node_Links` VARCHAR(1000) NULL,
  16. `Comments` VARCHAR(1000) NULL,
  17. `Status` INT UNSIGNED NOT NULL,
  18. `Issue` INT NOT NULL,
  19. `LO_Name` CHAR(255) NULL,
  20. `LO_Description` CHAR(255) NULL,
  21. `LO_Condition` VARCHAR(1000) NULL,
  22. `LO_Variables` VARCHAR(1000) NULL,
  23. `LO_List` INT NULL,
  24. PRIMARY KEY (`ID`),
  25. INDEX `fk_MultiStep_Dialogues_Status1_idx` (`Status` ASC) VISIBLE,
  26. CONSTRAINT `fk_MultiStep_Dialogues_Status1`
  27. FOREIGN KEY (`Status`)
  28. REFERENCES `DialogueFlowDB`.`Status` (`ID`)
  29. ON DELETE NO ACTION
  30. ON UPDATE NO ACTION)
  31. ENGINE = InnoDB
  32. SQL script execution finished: statements: 6 succeeded, 1 failed
  33. Fetching back view definitions in final form.
  34. Nothing to fetch

我在网上看到,问题可能与外键有关(尽管我检查过了,看起来不错……),或者与engine=innodb声明有关。我试着用这个问题的答案,但没有成功,或者我不太明白答案(我交换了engine=innodb;使用engine=innodb default charset=utf8 collate=utf8\u unicode\u ci;)我还检查了我的mysql版本,我使用10.1.35-mariadb,它应该有不可见的索引可用(如我链接的问题的另一个答案所述)。
我没有mysql的经验,所以如果这是一个非常简单的问题,我很抱歉。感谢您的帮助:)

ep6jt1vc

ep6jt1vc1#

好吧,有两个不同的问题。dialogueflow表中无符号int“status”的默认值是“created”(我从使用枚举改为使用外键,忘记删除旧的默认值),所以 Status int unsigned not null默认值“created”
另一个问题似乎与索引有关。当移除所有组件时:
索引 fk_MultiStep_Dialogues_Status1_idx ( Status asc)可见
索引 fk_Nodes_MultiStep_Dialogues_idx ( MultiStep_Dialogue asc)可见,
索引 fk_Nodes_Node_Types1_idx ( Node_Type asc)可见,
诸如此类,似乎奏效了。我真的不明白为什么会这样,但现在我将删除外键上的索引,并在以后修复它。

相关问题