我正在尝试从表devair的字段user_id到表bluePrints的PK id的模式users上添加外键约束,但出现错误:


  错误1215:无法添加外键约束


这是我的表定义:

用户:

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
  `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


bluePrints:

CREATE TABLE `bluePrints` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `bluePrintName` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `user_id` int(10) NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `uid` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


以及令人反感的alter table语句:

ALTER TABLE `devair`.`bluePrints`
ADD CONSTRAINT `bp_u`
  FOREIGN KEY (user_id)
  REFERENCES `devair`.`users` (id)
  ON DELETE CASCADE
  ON UPDATE CASCADE;

最佳答案

简单的答案是您需要执行以下操作:

ALTER TABLE table1 ADD CONSTRAINT fk_bp_id FOREIGN KEY (columnFromTable1) REFERENCES table2(columnReferencedFromTable2);

10-08 04:31