본문 바로가기
MySql

MySQL ID : 외래 키를 만들 수 없습니다. 열에 인덱스가 없습니다.

by 베이스 공부 2020. 11. 13.
반응형

몇 가지 외래 키를 설정했지만 phpMyAdmin을 사용하면 하나 더 만들 수 없습니다. 문제의 표는 다음과 같습니다.

Groups Table

id
name
address


Tasks Table

id
group_id
name

Tasks Table group_id 에 외래 키가 필요하지만 생성하려고하면 다음 오류가 발생합니다. Missing index on column (s) . group_id 에 고유 한 제한을 추가하면 외래 키를 만들 수 있지만 관계는 일대일 이되며 이는 예상 한 결과가 아닙니다.

다음은 테이블 생성 문입니다.

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`);

어떤 도움이나 안내도 대단히 감사합니다.

 

해결 방법

 

다음 코드는 상대 외래 키를 사용하여 두 개의 테이블을 만들 수 있습니다.

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`)
);

 

참조 페이지 https://stackoverflow.com/questions/34768959

 

 

반응형

댓글