正向工程 MySQL 工作台错误 1064
Posted
技术标签:
【中文标题】正向工程 MySQL 工作台错误 1064【英文标题】:Forward Engineering MySQL Workbench Error 1064 【发布时间】:2019-03-08 13:02:49 【问题描述】:我制作了一个 EER 图,我正在尝试对其进行转发工程,但我收到此错误,但我找不到错误。
在服务器中执行 SQL 脚本 ERROR: Error 1064: You have an error in 你的 SQL 语法;检查与您的 MariaDB 对应的手册 在 'INDEX 附近使用正确语法的服务器版本
fk_User_Wallets1_idx
(Wallets_idWallets
ASC) 可见,约束' 在第 13 行
SQL 代码:
CREATE TABLE IF NOT EXISTS `mydb`.`User` (
`idUser` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`email` VARCHAR(45) NULL,
`adress` VARCHAR(45) NULL,
`password` VARCHAR(45) NULL,
`saldo` INT NULL,
`date_start` DATETIME NULL,
`date_end` DATETIME NULL,
`Rolls_idRolls` INT NOT NULL,
`Wallets_idWallets` INT NOT NULL,
PRIMARY KEY (`idUser`, `Rolls_idRolls`, `Wallets_idWallets`),
INDEX `fk_User_Rolls1_idx` (`Rolls_idRolls` ASC) VISIBLE,
INDEX `fk_User_Wallets1_idx` (`Wallets_idWallets` ASC) VISIBLE,
CONSTRAINT `fk_User_Rolls1`
FOREIGN KEY (`Rolls_idRolls`)
REFERENCES `mydb`.`Rolls` (`idRolls`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_User_Wallets1`
FOREIGN KEY (`Wallets_idWallets`)
REFERENCES `mydb`.`Wallets` (`idWallets`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
SQL script execution finished: statements: 11 succeeded, 1 failed
Fetching back view definitions in final form.
Nothing to fetch
【问题讨论】:
结束括号是否意味着在查询的末尾?ON UPDATE NO ACTION) ENGINE = InnoDB
似乎结束部分在创建语句 ENGINE = InnoDB
之外浮动。
你应该检查你的mysql版本中是否有不可见的索引。你在哪个版本? mysqlserverteam.com/mysql-8-0-invisible-indexes
(unrelated) 这个 PK 看起来很奇怪:PRIMARY KEY (idUser
, Rolls_idRolls
, Wallets_idWallets
) -- 因为idUser
在逻辑上是唯一的,而PRIMARY KEY
意味着唯一 --为什么列出了其他列?
【参考方案1】:
在您转发工程之前,请勾选以下选项并继续该过程,
转到选项部分> 在要创建的数据库的设置选项下
跳过创建外键 也跳过创建索引 生成单独的创建索引语句 为表生成插入语句并继续前向工程过程。
【讨论】:
您能解释一下您的解决方案吗?问题是什么?您提出的解决方案如何解决?【参考方案2】:这是mysql版本问题 去掉VISIBLE。并手动运行代码。或者将mysql服务器和客户端更新到相同的版本。
(Wallets_idWallets
ASC) 可见到 (Wallets_idWallets
ASC)
【讨论】:
【参考方案3】:你能添加引擎吗
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
【讨论】:
这如何解决问题?以上是关于正向工程 MySQL 工作台错误 1064的主要内容,如果未能解决你的问题,请参考以下文章
从 MSSQL 迁移到 MYSQL 错误 1064 MYSQL Workbench
MySQL错误代码:在MySQL Workbench中创建表期间出现1064 [关闭]