Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql zduplikowane ograniczenie klucza obcego

Jeśli spojrzysz na wynik zapytania, klucz obcy bid_ibfk_3 już istnieje . W rzeczywistości znajduje się w drugim rzędzie wyniku.

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

Właśnie dlatego otrzymujesz zduplikowaną nazwę ograniczenia klucza obcego, gdy próbujesz wykonać to:

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

Możesz zmodyfikować zapytanie, aby najpierw sprawdzić, czy klucz obcy, który próbujesz utworzyć, nie istnieje, zanim faktycznie go utworzysz.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wizualny Konstruktor Zapytań

  2. PHP - MySQL wybierz dane z tabeli, a następnie zaktualizuj tę samą tabelę

  3. Group_Concat w Concat nie działa z wartościami NULL

  4. Zagubiony w datach i strefach czasowych

  5. Reguły zabezpieczeń dziedziczenia naruszone przez typ:„MySql.Data.Entity.MySqlEFConfiguration”