MySQL 错误 1064 语法,但一切似乎都很好

Posted

技术标签:

【中文标题】MySQL 错误 1064 语法,但一切似乎都很好【英文标题】:MySQL error 1064 syntax but everything seems fine 【发布时间】:2020-04-28 13:29:42 【问题描述】:

我正在使用 xampp 控制面板,并从那里开始 apache 和 mysql 的进程。然后我去mysql工作台,服务器状态似乎没问题,这里有一些信息

Host: Windows-PC
Socket: C:/xampp/mysql/mysql.sock
Port: 3306
Version 10.1.31-MariaDB mariadb.org binary distribution
Compiled For: Win32(32)
Configuratin File: unknown

然后每次我尝试为我的虚拟架构添加外键时,例如:

 ALTER TABLE `puppies`.`animals` 
 ADD INDEX `Breed_idx` (`BreedID` ASC) VISIBLE;
 ;
 ALTER TABLE `puppies`.`animals` 
 ADD CONSTRAINT `Breed`
 FOREIGN KEY (`BreedID`)
 REFERENCES `puppies`.`breeds` (`Breed`)
 ON DELETE NO ACTION
 ON UPDATE NO ACTION;

我收到以下错误

 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 
 '' at line 2
 SQL Statement:
 ALTER TABLE `puppies`.`animals` 
 ADD INDEX `Breed_idx` (`BreedID` ASC) VISIBLE

那么我该怎么做才能让 xampp 开始在 mariaDb 上使用 mysql 语法?

或者如果我对问题的理解有误,那么我应该怎么做才能在使用 xampp 时不必再次面对此类问题?

【问题讨论】:

你有一个额外的;可见后;作为记录,语法与 mysql 相同 上面的sql语句到底是怎么发出来的?为什么那里有一个空行(第 3 行)?顺便说一句,MariaDB 是 MySQL 的一个分支。 im 使用 mysql 工作台,它为 sql 生成那些脚本行。我尝试删除“;”但它仍然给出同样的错误,任何想法我可能做错了什么? 有没有办法覆盖 xampp for sql 中的一些规则,以便我可以正常工作? 您是否为 MySQL 8.0 配置了 Workbench,但您正在使用 MariaDB 运行?您遇到了两者之间的差异之一。 【参考方案1】:

问题是VISIBLE 这个词,删除它就可以了。 索引默认可见。

您的问题:“如果我删除 VISIBLE 它工作得很好,那么为什么 mysql 工作台决定添加可见?”

我的回答:将索引标记为不可见的选项尚未在 MariaDB 中实现(afaik!)。

更新:

MariaDB 的语法不同,请参阅此参考:https://jira.mariadb.org/browse/MDEV-7317

【讨论】:

但是有没有办法让mysql工作台明白它不应该添加尚未实现的语法? MySQL Workbench 是针对 MySQL 的,MariaDB 是另外一回事,虽然是替代品,但可能会有差异。它不叫 MariaDB Workbench :-) 但这正是我的想法,有没有办法让 xampp 为 mysql db 而不是 mariaDb 工作?试图在互联网上找到一些东西,但似乎没有一个解决方案是最新的 您可以尝试删除 MariaDB 并安装 MySQL,请尝试以下链接:***.com/questions/39654428/… 我正在查看那个帖子,基本上我在发布我的问题时已经完成了所有步骤。就像安装了 Mysql 工作台和所有东西一样,然后通过那里我试图制作一个表格并得到了我发布的错误。那么有没有更具体的方法来解决这个问题呢?【参考方案2】:

只是添加到那些正在使用 MySQL Workbench 的 Maria DB 的人中,您不需要安装 mysql。您只需将“默认目标 MySQL 版本”从 Preferences 更改为 5.7 或 5.6,工作台将删除 VISIBLE 关键字。

这是一个来自 mysql 错误的链接 https://bugs.mysql.com/bug.php?id=92269

【讨论】:

这应该是公认的答案。将其降至 5.7 为我们修复了它。使用 Mariadb 10.3【参考方案3】:

我正在使用 MySQL Workbench 并且有同样的问题。 更改了首选项,但没有奏效

解决方案:如果您导出正向工程模型,则需要在其他地方更改配置。

    转到模型 > 模型选项 在模型选项中,转到 MySQL 然后将“目标 MySQL 版本”更改为 5.6

【讨论】:

以上是关于MySQL 错误 1064 语法,但一切似乎都很好的主要内容,如果未能解决你的问题,请参考以下文章

twitter 开发者 api oauth 提供了错误的身份验证数据,但一切都很好

我不知道为啥我在发送不和谐的 webhook 时收到 400 bad request 错误。一切似乎都很好,但我对此很陌生

我尝试在 heroku 中部署我的网络应用程序,在本地主机中,一切都很好,但是在 heroku 中,我收到以下错误

VsCode Dart 代码突出显示错误的颜色

mysql 8.0 上的“group by desc”语法错误,在 5.7 上很好

SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 — PHP — PDO [重复]