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

Problem med at tilføje fremmednøgle ved hjælp af Alter Table med eksisterende MYSQL-database - kan ikke tilføje den! Hjælp!

Er begge tabeller InnoDB-typen?

Har virksomhedstabellen et indeks på virksomheds-id?

Jeg gætter på, at din tabel er MyISAM (standarden, hvis du ikke har ændret konfigurationen), og du kan ikke oprette fremmednøglebegrænsninger i MyISAM. Se beskrivelsen af ​​CREATE TABLE for dine to borde.

Hvis begge tabeller er tomme, skal du slippe dem og genskabe dem ved at vælge InnoDB som motor. Du kan også tilføje FOREIGN KEY-begrænsningerne i scriptet til oprettelse af tabeller.

Fra MySQL Referencemanual :

@egervari:Hvad sker der, hvis du kører dette:

CREATE TABLE `test` (
  `company_id` bigint(20) NOT NULL,
  `module_id` bigint(20) NOT NULL,

  KEY  (`module_id`),
  KEY  (`company_id`),

  CONSTRAINT `test_fk_module`
    FOREIGN KEY (`module_id`)
    REFERENCES `module` (`module_id`),

  CONSTRAINT `test_fk_company`
    FOREIGN KEY (`company_id`)
    REFERENCES `company` (`company_id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

Og hvis du kører:

ALTER TABLE `company_to_module`
  ADD CONSTRAINT `company_to_module_fk_company` 
    FOREIGN KEY (`company_id`)
    REFERENCES `company` (`company_id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT;


  1. Grails og MySQL Connection Exception

  2. mysql indsæt, hvis værdi ikke findes i en anden tabel

  3. MySql sum elementer af en kolonne

  4. SQL COUNT() for begyndere