sql >> Databáze >  >> RDS >> Mysql

Mysql duplicitní omezení cizího klíče

Pokud se podíváte na výsledek vašeho dotazu, cizí klíč bid_ibfk_3 již existuje . Ve skutečnosti je ve druhém řádku výsledku.

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

To je důvod, proč dostáváte duplicitní název omezení cizího klíče, když se pokoušíte provést toto:

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

Svůj dotaz můžete upravit tak, abyste nejprve zkontrolovali, zda cizí klíč, který se pokoušíte vytvořit, neexistuje, než jej skutečně vytvoříte.

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. Zkontrolujte, zda uživatelské jméno existuje v tabulce mysql pomocí php?

  2. MySQL dotaz Select, SUM, LEFT JOIN

  3. CakePHP Model Query Return Data Formation

  4. Získávání dat z mysql do StreamBuilder Flutter