【问题标题】:I cannot figure out what wrong on MySQL keep getting error 1064 [duplicate]我无法弄清楚 MySQL 有什么问题不断收到错误 1064 [重复]
【发布时间】:2019-07-16 23:13:12
【问题描述】:

在服务器中执行 SQL 脚本

错误:错误 1064:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在“可见”附近使用的正确语法, 约束fk_WEEK_WORKOUT 外键 (WORKOUT_IdWorkout) ' 在第 12 行

SQL 代码:

    -- -----------------------------------------------------
    -- Table `mydb`.`WEEK`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `mydb`.`WEEK` (
      `WeekOne` VARCHAR(27) NOT NULL,
      `WeekTwo` VARCHAR(27) NOT NULL,
      `WeekThree` VARCHAR(27) NOT NULL,
      `WeekFour` VARCHAR(27) NOT NULL,
      `IdWeek` INT NOT NULL,
      `WORKOUT_IdWorkout` INT NOT NULL,
      PRIMARY KEY (`IdWeek`),
      INDEX `fk_WEEK_WORKOUT_idx` (`WORKOUT_IdWorkout` ASC) VISIBLE,
      CONSTRAINT `fk_WEEK_WORKOUT`
        FOREIGN KEY (`WORKOUT_IdWorkout`)
        REFERENCES `mydb`.`WORKOUT` (`IdWorkout`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB

无论我改变什么,我每次都会得到这个

【问题讨论】:

  • 您是否查看了您的 MySQL 版本的手册以查看该版本是否支持 VISIBLE?并非所有人都如此。谷歌 mysql 文档 找到您正在使用的特定 MySQL 版本的文档,然后阅读CREATE TABLE 的文档。 (或者更快,您可以尝试在此站点中搜索 mysql error 1064 visible。)
  • 顺便说一下,考虑一下这是否真的是您场景的最佳设计。

标签: mysql sql mysql-error-1064


【解决方案1】:

MySQL Invisible Indexes 引入了 VISIBLE 关键字,从 8.0 版开始可用。您可能运行的是早期版本。

该功能称为不可见 索引:这表明,在早期版本的 MySQL 中,索引始终是可见的。即使在 MySQL 8.0 中,索引也是默认可见的,除非明确定义为 INVISIBLE

您可以安全地从脚本中删除 VISIBLE 关键字,它应该在所有版本的 MySQL 上都可以正常工作(并且始终如一)(假设表 WORKOUT 存在并且它有一个名为 IdWorkout 的唯一列数据类型INT)。

Demo on DB Fiddle

【讨论】:

    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2017-06-15
    • 2017-07-28
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    相关资源
    最近更新 更多