SQL 错误 1064:您的 SQL 语法有错误

Posted

技术标签:

【中文标题】SQL 错误 1064:您的 SQL 语法有错误【英文标题】:SQL Error 1064: You have an error in your SQL syntax 【发布时间】:2020-12-27 01:04:57 【问题描述】:

我终其一生都无法弄清楚哪里出了问题。我在 mysql 工作台中创建了 ERD 和关系,它吐出了这段代码。我将它转发到我的 dbms 并收到此错误。

Executing SQL script in server
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 ')
ENGINE = InnoDB' at line 10
SQL Code:
        -- -----------------------------------------------------
        -- Table `deadiade_golfbag`.`users`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `deadiade_golfbag`.`users` (
          `id` INT NOT NULL AUTO_INCREMENT,
          `first_name` VARCHAR(150) NOT NULL,
          `last_name` VARCHAR(250) NULL,
          `professional` BINARY(1) NOT NULL DEFAULT 0,
          PRIMARY KEY (`id`, `professional`),
          UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE)
        ENGINE = InnoDB

SQL script execution finished: statements: 5 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

【问题讨论】:

【参考方案1】:

MariaDB 不支持不可见索引 - 与 MySQL 不同,后者在 8.0 版本中添加了此功能。

MariaDB 10.5 的解析器似乎允许VISIBLE(虽然它在INVISIBLE 上失败),但我怀疑它基本上忽略了它。在早期版本中,它只是在 VISIBLE 上失败。

VISIBLE 无论如何都是默认设置,因此您可以将该关键字分开(以及索引列上的ASC,这也是默认设置):

CREATE TABLE IF NOT EXISTS `deadiade_golfbag`.`users` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `first_name` VARCHAR(150) NOT NULL,
    `last_name` VARCHAR(250) NULL,
    `professional` BINARY(1) NOT NULL DEFAULT 0,
    PRIMARY KEY (`id`, `professional`),
    UNIQUE INDEX `id_UNIQUE` (`id`) 
) ENGINE = InnoDB

请注意,在两列 上有一个主键并在这两列之一上有一个唯一索引是没有意义的:唯一键比主键更具限制性。

【讨论】:

我怀疑该设置是由mysqldump 自动添加的。你知道是否有一个选项可以让它省略这个吗? @Barmar:我不知道。快速浏览文档并没有显示明显的选项。如果那来自 phpmyadmin,也许这会有所帮助:***.com/questions/53434830/…?

以上是关于SQL 错误 1064:您的 SQL 语法有错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL 错误 1064:您的 SQL 语法有错误

MySQL #1064 - 您的 SQL 语法 2020 有错误 [重复]

phpMyAdmin 导入错误 #1064 “您的 Sql 语法有错误”

SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 - LARAVEL

Laravel 5.8 SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误

Python 错误 1064:您的 SQL 语法有错误 | Arduino 串行