为啥我的脚本在执行时出现错误 1064
Posted
技术标签:
【中文标题】为啥我的脚本在执行时出现错误 1064【英文标题】:why is there error 1064 in my script when i executed it为什么我的脚本在执行时出现错误 1064 【发布时间】:2019-05-21 13:14:02 【问题描述】:错误代码:1064。您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 7 行的 ') ENGINE = InnoDB' 附近使用正确的语法
CREATE TABLE IF NOT EXISTS `game_review`.`users` (
`user_id` INT NOT NULL AUTO_INCREMENT,
`email_address` VARCHAR(45) NOT NULL,
`password` VARCHAR(6) NOT NULL,
`username` VARCHAR(20) NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC) VISIBLE)
ENGINE = InnoDB;
我希望它能够正确执行,因为我使用我创建的 ER 图对其进行了前向工程,但它给了我上面的错误消息。
【问题讨论】:
什么是VISIBLE
?这似乎不是MariaDB CREATE TABLE
documentation 中的关键字。
@DavidMaze 在 MySQL 8 中支持不可见索引。
我实际上不确定,因为我才开始使用这个 1 个月,所以我只是推进工程,它给了我这个结果。但仍然非常感谢您编辑我的问题。非常感谢
删除UNIQUE INDEX
行;这是多余的,因为PRIMARY KEY
是唯一索引。
【参考方案1】:
MariaDB 不支持不可见索引,因此不使用 VISIBLE
和 INVISIBLE
关键字。默认情况下,优化器已经可以看到索引,因此您可以使用:
UNIQUE INDEX user_id_UNIQUE (user_id)
但是,主键列应该已经是唯一的,因此您甚至可以不包括唯一索引。
旁注:MySQL 8+ 确实支持不可见索引see here,但您的 MariaDB 版本似乎不支持它们。
【讨论】:
非常感谢。当我添加这个 UNIQUE INDEX user_id_UNIQUE (user_id) 时它可以工作,但我可以问一下 ASC 怎么样?我的 MariaDB 版本是 10.1.36-MariaDB MySQL/MariaDB 上的索引默认应该是升序的,所以你可以省略ASC
关键字。
对不起先生,我还有另一个问题。我的另一张桌子有错误。这是错误代码:1064。您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 7 行的 'INDEX user_id_idx
(iduser
ASC) VISIBLE, INDEX game_id_idx
(idgame
A' 附近使用正确的语法
使用INDEX user_id_idx (iduser), INDEX game_id_idx (idgame)
以上是关于为啥我的脚本在执行时出现错误 1064的主要内容,如果未能解决你的问题,请参考以下文章