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 语法有错误的主要内容,如果未能解决你的问题,请参考以下文章
MySQL #1064 - 您的 SQL 语法 2020 有错误 [重复]
phpMyAdmin 导入错误 #1064 “您的 Sql 语法有错误”
SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误 - LARAVEL