从MySQL Workbench创建外键时出错


9

我正在尝试将模式更改从MySQL Workbench同步到我的数据库。尝试创建外键时出现以下错误:

Executing SQL script in server
ERROR: Error 1005: Can't create table 'tomato.#sql-2730_1b8' (errno: 121)

这是它试图执行的语句:

ALTER TABLE `tomato`.`ing_allergy_ingredient` 
ADD CONSTRAINT `fk_ai_allergy`
FOREIGN KEY (`allergy_id` )
REFERENCES `tomato`.`ing_allergy` (`allergy_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION

任何想法这个错误是什么意思?

Answers:


11

如果您尝试添加名称已经在其他地方使用的约束,则会收到此消息。

根据这篇文章,您可以像这样检查约束:

如果您要创建的表包含外键约束,并且您已经为该约束提供了自己的名称,请记住,它在数据库中必须是唯一的。运行此查询以查看该名称是否在某处使用:

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;

该查询未显示外键,但是当我查看该表时,那里有一个同名索引。我相信这是MySQL Workbench中同步的错误。我下载了最新版本(5.2.31),问题不再存在。
BenV 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.