sql >> Database teknologi >  >> RDS >> Mysql

Mysql duplikeret udenlandsk nøgle begrænsning

Hvis du ser på resultatet af din forespørgsel, fremmednøglen bid_ibfk_3 eksisterer allerede . Faktisk er det i anden række af resultatet.

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

Det er derfor, du får det duplikerede navn på en fremmednøgle, når du prøver at udføre dette:

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

Du kan ændre din forespørgsel for først at kontrollere, om den fremmednøgle, som du forsøger at oprette, ikke eksisterer, før du rent faktisk opretter den.

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. PostgreSQL:Hvordan sender man parametre fra kommandolinjen?

  2. Problem med indsættelse fra python-script i mysql-database med innondb-motor

  3. Hvordan kan jeg bruge Entity Framework på en objektgraf forbi en dybde på 2 med MySQL Connector / NET?

  4. Anorm Mysql Stored Procedure opkald