mysql - SQL 错误 1064:您的 SQL 语法有错误
问题描述
对于我的一生,我无法弄清楚出了什么问题。我在 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
解决方案
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
请注意,在两列上有一个主键并在这两个列中的一个上有一个唯一索引是没有意义的:唯一键比主键更具限制性。
推荐阅读
- python - 如何加快对多列执行求和的 pandas groupby?
- javascript - 使用上一个/下一个按钮导航 div
- node.js - macOS 11.3.1 M1 上的 MongoDB 在 CLI 上连接,但不是 Compass
- java - 如何使用二维数组作为输入?
- elasticsearch - oauth2_proxy 用于基本身份验证登录
- android - recycleview 在过滤数据后显示错误的数据
- pine-script - 如何回顾以前的指标值以及如何防止实时柱重新绘制?
- json - 如何获取 API 的嵌套对象
- ios - 存储在 AWS S3 中的 WAV 音频文件不会在 iOS 设备中流式传输
- swift - MacOs Swift 5:单击状态栏项目,.rightMouseUp 不起作用?