【问题标题】:How to fix error 1064 while trying to add foreign key如何在尝试添加外键时修复错误 1064
【发布时间】:2019-05-15 13:10:21
【问题描述】:

我正在尝试为库设置数据库,在创建表并尝试创建外键后,我收到此错误 (1064),我不知道该怎么办。我正在使用 MySQL 8

我搜索了,我找不到类似的东西。我发现的只是保留字的问题,我认为在这种情况下不是问题。

ALTER TABLE `project`.`book` 
ADD INDEX `pubName_fk_idx` (`pubName` ASC) VISIBLE;
;
ALTER TABLE `project`.`book` 
ADD CONSTRAINT `pubName_fk`
  FOREIGN KEY (`pubName`)
  REFERENCES `project`.`publisher` (`pubName`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

错误信息:

操作失败:将 SQL 脚本应用到 数据库。执行:

ALTER TABLE `project`.`book` 
ADD INDEX `pubName_fk_idx` (`pubName` ASC) VISIBLE;
;
ALTER TABLE `project`.`book` 
ADD CONSTRAINT `pubName_fk`
  FOREIGN KEY (`pubName`)
  REFERENCES `project`.`publisher` (`pubName`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

ERROR 1064:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取在第 2 行的 '' 附近使用的正确语法 SQL 语句:

ALTER TABLE `project`.`book` 
ADD INDEX `pubName_fk_idx` (`pubName` ASC) VISIBLE

【问题讨论】:

  • 我玩 MySQL 已经有一段时间了,但会不会有那么任性的额外 ;?
  • 不,我已经尝试过了,我发现唯一可行的方法是删除 INDEX 代码行,但我认为这不是正确的做法。
  • 创建索引而不是添加索引?
  • 不,还是一样的错误
  • 你用的是什么版本的mysql?

标签: mysql sql mariadb


【解决方案1】:

如果您使用的是 8.0 以下的 MariaDB 或 MySQL,它们还没有实现 VISIBLE 或 INVISIBLE 索引,因此您需要更改查询:

ALTER TABLE `project`.`book` 
ADD INDEX `pubName_fk_idx` (`pubName` ASC)

【讨论】:

  • 成功了!非常感谢您的好心先生!祝你有美好的一天!
猜你喜欢
  • 2019-09-29
  • 2013-10-18
  • 2021-03-17
  • 2013-11-16
  • 1970-01-01
  • 2021-09-11
  • 2015-06-08
  • 2011-06-01
  • 2014-02-28
相关资源
最近更新 更多