【问题标题】:Trouble to add a foreign key at table在表中添加外键的麻烦
【发布时间】:2020-08-28 17:46:06
【问题描述】:

我有一个名为model_agricultural_machine 的表,我使用的是 MariaDB

CREATE TABLE `autoparanaiba`.`model_agricultural_machine` (
  `id` INT NOT NULL,
  `description` VARCHAR(90) NOT NULL,
  `brand_agricultural_machine_id` TINYINT(5) UNSIGNED ZEROFILL NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_modelXbrand_idx` (`brand_agricultural_machine_id` ASC) VISIBLE,
  CONSTRAINT `fk_modelXbrand`
    FOREIGN KEY (`brand_agricultural_machine_id`)
    REFERENCES `autoparanaiba`.`brand_agricultural_machine` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

当我运行这个命令时,出现这个错误。

Operation failed: There was an error while applying the SQL script to the database.
Executing:
CREATE TABLE `autoparanaiba`.`model_agricultural_machine` (
  `id` INT NOT NULL,
  `description` VARCHAR(90) NOT NULL,
  `brand_agricultural_machine_id` TINYINT(5) UNSIGNED ZEROFILL NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_modelXbrand_idx` (`brand_agricultural_machine_id` ASC) VISIBLE,
  CONSTRAINT `fk_modelXbrand`
    FOREIGN KEY (`brand_agricultural_machine_id`)
    REFERENCES `autoparanaiba`.`brand_agricultural_machine` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION);

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 '
  CONSTRAINT `fk_modelXbrand`
    FOREIGN KEY (`brand_agricultural_machine_id`)' at line 6
SQL Statement:
CREATE TABLE `autoparanaiba`.`model_agricultural_machine` (
  `id` INT NOT NULL,
  `description` VARCHAR(90) NOT NULL,
  `brand_agricultural_machine_id` TINYINT(5) UNSIGNED ZEROFILL NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_modelXbrand_idx` (`brand_agricultural_machine_id` ASC) VISIBLE,
  CONSTRAINT `fk_modelXbrand`
    FOREIGN KEY (`brand_agricultural_machine_id`)
    REFERENCES `autoparanaiba`.`brand_agricultural_machine` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)

我看到了这个链接MySQL Error 1064 when adding foreign key with MySQL Workbench 所以我在 Workbench 看到的是 8.0.17 我运行这个命令来查看 MySQL 版本

mysql --version
mysql  Ver 8.0.20-0ubuntu0.19.10.1 for Linux on x86_64 ((Ubuntu))

我在 MySQL Workbench 进行了更改,但什么也没做,并且出现了同样的错误。

【问题讨论】:

  • 如果从 INDEX 中删除关键字 VISIBLE,是否还会出现该错误?
  • @HoneyboyWilson 我知道了。谢谢!

标签: mysql mariadb mysql-workbench


【解决方案1】:

我通过删除大约有ASC VISIBLE 的索引来解决。

【讨论】:

  • 谢谢。有效。我从生成的 SQL 中删除了“VISIBLE”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
相关资源
最近更新 更多