我不确定为啥我无法运行这个 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 脚本 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 执行 .SQL 脚本文件

不确定为啥代码重复某些输出

我不确定为啥会出现此错误。删除主键中的重复记录

我不完全确定这个 [重复] 的大 O 复杂性

SQL 中的脚本被编译或执行

关于写软件的一些思考,是吗?我不太确定