> 데이터 베이스 > MySQL 튜토리얼 > 제약 조건 이름이 중복되어 MySQL 테이블을 생성할 수 없는 이유는 무엇입니까?

제약 조건 이름이 중복되어 MySQL 테이블을 생성할 수 없는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-26 05:15:24
원래의
519명이 탐색했습니다.

Why Can't I Create My MySQL Table Due to Duplicate Constraint Names?

오류: 제약 조건 이름이 중복되어 테이블을 생성할 수 없습니다.

MySQL 데이터베이스를 WAMP 서버로 포워드 엔지니어링하는 중에 오류가 발생했습니다. "오류 1005: 'aquaticstar.link' 테이블을 생성할 수 없습니다(errno: 121)." 이 오류는 지정된 이름의 테이블이 데이터베이스에 이미 존재함을 나타냅니다.

추가 조사 결과 중복된 제약 조건 이름과 관련된 문제인 것으로 나타났습니다. 특히 Link 테이블에는 다른 테이블에도 있는 id 및 Lesson_id라는 외래 키 제약 조건이 포함되어 있습니다. 이러한 이름 충돌로 인해 데이터베이스가 링크 테이블을 생성할 수 없습니다.

이 문제를 해결하려면 링크 테이블의 외래 키 제약 조건 이름을 고유한 이름으로 바꿔야 합니다. 이는 실행된 스크립트에서 다음 줄을 수정하여 달성할 수 있습니다.

CONSTRAINT `id`
    FOREIGN KEY (`id` )
    REFERENCES `Students` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
CONSTRAINT `lesson_id`
    FOREIGN KEY (`lesson_id` )
    REFERENCES `Schedule` (`lesson_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
로그인 후 복사

예를 들어 id 제약 조건의 이름을 Student_id로 바꾸고 Lesson_id 제약 조건의 이름을 Schedule_lesson_id로 바꿀 수 있습니다.

CONSTRAINT `student_id`
    FOREIGN KEY (`id` )
    REFERENCES `Students` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
CONSTRAINT `schedule_lesson_id`
    FOREIGN KEY (`lesson_id` )
    REFERENCES `Schedule` (`lesson_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
로그인 후 복사

제약 조건의 이름을 바꾼 후 스크립트를 다시 실행하여 링크 테이블을 성공적으로 생성하세요.

위 내용은 제약 조건 이름이 중복되어 MySQL 테이블을 생성할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿