Mysql
 sql >> база данни >  >> RDS >> Mysql

Проблем с добавянето на чужд ключ чрез Alter Table със съществуваща база данни MYSQL - не мога да го добавя! Помогне!

И двете таблици тип InnoDB ли са?

Фирмената таблица има ли индекс на company_id?

Предполагам, че вашата таблица е MyISAM (по подразбиране, ако не сте променили конфигурацията) и не можете да създавате ограничения за външни ключове в MyISAM. Вижте описанието на CREATE TABLE за вашите две маси.

Ако и двете таблици са празни, пуснете ги и ги създайте отново, като изберете InnoDB като машина. Можете също да добавите ограниченията FOREIGN KEY в скрипта(ите) за създаване на таблици.

От MySQL Справочно ръководство :

@egervari:Какво се случва, ако стартирате това:

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 ;

И ако стартирате:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при импортирането на SQL дъмп в MySQL:Неизвестна база данни / Не мога да създам база данни

  2. Обработка на данни от поле за множествен избор

  3. Запитване на няколко бази данни наведнъж

  4. Amazon EC2, mysql прекратява стартирането, защото InnoDB:mmap (x байта) не успя; грешка 12

  5. Избиране на множество колони/полета в MySQL подзаявка