无法创建外键id MySQL:列上缺少索引

时间:2016-01-13 14:15:05

标签: mysql phpmyadmin

我设置了一些外键,但phpMyAdmin不允许我再创建一个。以下是有问题的表格:

Groups Table

id
name
address


Tasks Table

id
group_id
name

我需要group_idTasks Table上的外键,但当我尝试在其中创建时会出现以下错误:Missing index on column(s)。如果我在group_id上添加了一个唯一约束,那么我就可以创建外键,但是通货膨胀会变成One to One,这不是预期的结果。

以下是表创建语句:

CREATE TABLE IF NOT EXISTS `groups` (
  `id` int(11) NOT NULL,
  `name` varchar(256) NOT NULL,
  `address` varchar(256) NOT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

ALTER TABLE `groups`
  ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `id` (`id`), ADD UNIQUE KEY `id_2` (`id`);


CREATE TABLE IF NOT EXISTS `tasks` (
  `id` int(11) NOT NULL,
  `group_id` int(11) NOT NULL,
  `name` varchar(256) NOT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

ALTER TABLE `fixed_tasks`
  ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `id` (`id`);

非常感谢任何帮助或指导。

1 个答案:

答案 0 :(得分:2)

以下代码可以创建两个具有相对外键的表:

CREATE TABLE `Groups` (
  `id` INT NOT NULL,
  `name` VARCHAR(45) NULL,
  `address` VARCHAR(45) NULL,
  PRIMARY KEY (`id`)
);


CREATE TABLE `Tasks` (
  `id` INT NOT NULL,
  `group_id` INT NULL,
  `name` VARCHAR(45) NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `group_id`
    FOREIGN KEY (`group_id`)
    REFERENCES `Groups` (`id`)
);