sql >> データベース >  >> RDS >> Mysql

Mysql重複外部キー制約

    クエリの結果を見ると、外部キーbid_ibfk_3 すでに存在します 。実際、結果の2行目にあります。

    def     projekt_classics    bid_ibfk_2      projekt_classics    bid     FOREIGN KEY
    --the row below is the foreign key that you are trying to create
    def     projekt_classics    bid_ibfk_3      projekt_classics    bid     FOREIGN KEY
    def     projekt_classics    car_ibfk_1      projekt_classics    car     FOREIGN KEY
    def     projekt_classics    car_ibfk_3      projekt_classics    car     FOREIGN KEY
    def     projekt_classics    car_ibfk_4      projekt_classics    car     FOREIGN KEY
    def     projekt_classics    car_brand_ibfk_1    projekt_classics    car_brand   FOREIGN KEY
    

    これを実行しようとすると、重複する外部キー制約名が取得されるのはそのためです。

    ADD CONSTRAINT `bid_ibfk_3` FOREIGN KEY (`car_id`) REFERENCES `car` (`car_id`)
    

    クエリを変更して、実際に作成する前に、作成しようとしている外部キーが存在しないかどうかを最初に確認できます。

    IF NOT EXISTS (SELECT NULL FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
                       WHERE CONSTRAINT_SCHEMA = DATABASE()
                             AND CONSTRAINT_TYPE = 'FOREIGN KEY'
                             AND CONSTRAINT_NAME = 'bid_ibfk_3') THEN
       ALTER TABLE `bid` ADD CONSTRAINT `bid_ibfk_3`
            FOREIGN KEY (`car_id`) REFERENCES `car` (`car_id`);
    END IF
    



    1. Amazon Aurora PostgreSQL SELECT INTO OUTFILE S3

    2. Hibernate、Postgres、およびアレイタイプ

    3. 1つが別の一部に類似している列を比較する

    4. MacOSX:起動時にmysqlを自動起動します