我不确定为啥我无法运行这个 sql 脚本 [重复]
Posted
技术标签:
【中文标题】我不确定为啥我无法运行这个 sql 脚本 [重复]【英文标题】:i'm unsure as to why i'm unable to run this sql script [duplicate]我不确定为什么我无法运行这个 sql 脚本 [重复] 【发布时间】:2020-04-18 11:08:40 【问题描述】:用我的 sql 创建了这个,但不确定脚本有什么问题
CREATE TABLE IF NOT EXISTS `restaurant`.`restaurant` (
`_id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`added_date` VARCHAR(30) NULL,
`tele_number` VARCHAR(8) NULL,
`about` TEXT(1024) NULL,
`average_rating` INT NULL,
`price` VARCHAR(10) NULL,
`opening_hour` VARCHAR(255) NULL,
`restaurantcol` VARCHAR(45) NULL,
PRIMARY KEY (`_id`),
UNIQUE INDEX `_id_UNIQUE` (`_id` ASC) VISIBLE,
UNIQUE INDEX `tele number_UNIQUE` (`tele_number` ASC) VISIBLE)
ENGINE = InnoDB
给出的错误:
错误代码:1064。您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 12 行的 'UNIQUE INDEX tele number_UNIQUE
(tele_number
ASC) VISIBLE) ENGINE = InnoD' 附近使用正确的语法
【问题讨论】:
mysql 的错误信息中包含了查询中未被解析的部分,因为最后解析的token 是产生错误的那个。这意味着 " UNIQUE INDEX tele number_UNIQUE ..." 之前的单词是问题所在。这个词是VISIBLE
。这个关键字在 MySQL 8.0 中已经引入,你可能使用的是更早的版本。
【参考方案1】:
MySQL 的错误消息包含查询中未被解析的部分,因为最后一个解析的标记是产生错误的标记。这意味着 " UNIQUE INDEX tele number_UNIQUE ..." 之前的单词是问题所在。这个词是VISIBLE
。
VISIBLE
关键字已在 MySQL 8.0 中引入,您可能使用的是更早的版本。
默认情况下,索引为VISIBLE
。您可以安全地从查询中删除此关键字。在 MySQL 8 上,您将获得与使用它时相同的结果。在 MySQL 5 上不存在不可见索引的概念,所有索引都是可见的。
我现在在错误消息中看到您使用的不是 MySQL 而是 MariaDB。 MariaDB 是 MySQL 5 的一个分支,在某种程度上与 MySQL 兼容。您会在这里和那里发现许多细微差别。
【讨论】:
这就是为什么 mariadb 问题不应该真正被标记为 mysql...以上是关于我不确定为啥我无法运行这个 sql 脚本 [重复]的主要内容,如果未能解决你的问题,请参考以下文章