为什么当我尝试添加外键时 MYSQL 会出错?

时间:2021-02-14 16:52:16

标签: mysql sql foreign-keys cascade

我正在尝试在 MYSQL 中创建一个关系数据库。 目前,我正在制作外键并将它们连接到父表。 问题是当我尝试这样做时(在 MYSQL 工作台中)MYSQL 添加了这行代码:

ADD INDEX `FK_party_coalitionparty_idx` (`partyId` ASC) VISIBLE;

经过一番研究,我发现这样做是因为当我删除或更新父表时,当子表也删除或更新连接的值(或列)时,这真的很方便。

问题是当我在没有添加索引行的情况下运行外键代码时,它运行没有问题,但是添加了它(我想我明白为什么添加它是好的)它出错并且不想执行更新我的数据库的代码。

当我尝试在 SQL 文件中执行代码时,它给了我以下错误,其中包含单词 VISIBLE:

VISIBLE is not valid at this position.

当我只尝试删除可见单词时,它无法添加我的约束(我认为是因为您不能在彼此下方放置 2 次添加)。我会附上一些截图和消息日志,让我的问题更清楚。

消息日志:

Operation failed: There was an error while applying the SQL script to the database.
Executing:
ALTER TABLE `testdatabase`.`coalitionparty` 
ADD INDEX `FK_party_coalitionparty_idx` (`partyId` ASC) VISIBLE;
;
ALTER TABLE `testdatabase`.`coalitionparty` 
ADD CONSTRAINT `FK_party_coalitionparty`
  FOREIGN KEY (`partyId`)
  REFERENCES `testdatabase`.`party` (`id`)
  ON DELETE CASCADE
  ON UPDATE CASCADE;

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 '' at line 2
SQL Statement:
ALTER TABLE `testdatabase`.`coalitionparty` 
ADD INDEX `FK_party_coalitionparty_idx` (`partyId` ASC) VISIBLE

我的 SQL 文件(当我尝试运行 SQL 代码但不使用工作台菜单时: SQL file with the error included at the bottom

问题: 我需要如何解决这个问题,以便我能够使用级联并且不会出现错误?

提前致谢!

1 个答案:

答案 0 :(得分:1)

Mariadb 没有 VISIBLE

查看手册了解更多information

所以你只能这样做

ALTER TABLE `coalitionparty` 
ADD INDEX `FK_party_coalitionparty_idx` (`partyId` ASC) ;

或切换到 MySQL