【问题标题】:MySQL error 1064 syntax but everything seems fineMySQL 错误 1064 语法,但一切似乎都很好
【发布时间】:2025-11-21 08:05:01
【问题描述】:

我正在使用 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 运行?您遇到了两者之间的差异之一。

标签: mysql xampp mariadb


【解决方案1】:

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

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

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

【讨论】:

    【解决方案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】:

    问题是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 工作台和所有东西一样,然后通过那里我试图制作一个表格并得到了我发布的错误。那么有没有更具体的方法来解决这个问题呢?