sql >> Databasteknik >  >> RDS >> Mysql

Problem med att lägga till främmande nyckel med Alter Table med befintlig MYSQL-databas - kan inte lägga till den! Hjälp!

Är båda tabellerna InnoDB-typ?

Har företagstabellen ett index på company_id ?

Jag antar att din tabell är MyISAM (standard om du inte har ändrat konfigurationen) och du kan inte skapa begränsningar för främmande nyckel i MyISAM. Se beskrivningen av CREATE TABLE för dina två bord.

Om båda tabellerna är tomma, släpp dem och återskapa dem, välj InnoDB som motor. Du kan också lägga till FOREIGN KEY-begränsningarna i skripten för att skapa tabeller.

Från MySQL Referensmanual :

@egervari:Vad händer om du kör detta:

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 ;

Och om du kör:

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. bevilja fil på bara en databas

  2. Hur TIME_FORMAT() fungerar i MariaDB

  3. Lista över icke-tomma tabeller i MySQL-databasen

  4. MYSQL-fråga mellan två tidsstämplar