【问题标题】:SQL Error 1064: You have an error in your SQL syntaxSQL 错误 1064:您的 SQL 语法有错误
【发布时间】: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

【问题讨论】:

    标签: mysql sql indexing mariadb create-table


    【解决方案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,也许这会有所帮助:stackoverflow.com/questions/53434830/…?
    猜你喜欢
    • 1970-01-01
    • 2016-10-30
    • 2016-01-24
    • 2020-07-09
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多