ホームページ  >  記事  >  データベース  >  制約名が重複しているため MySQL テーブルを作成できないのはなぜですか?

制約名が重複しているため MySQL テーブルを作成できないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-26 05:15:24461ブラウズ

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

エラー: 制約名が重複しているためテーブルを作成できません

MySQL データベースを WAMP サーバーにフォワード エンジニアリングする際に、エラーが発生しました「エラー 1005: テーブル 'aquaticstar.link' を作成できません (エラー番号: 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。