MySQL / PHP Admin:外键约束形成错误

时间:2017-06-26 16:13:59

标签: mysql phpmyadmin

我有一张名为预订的表,用于存储预订详情。当我尝试创建表时,它给出了错误;

  

异常形成外键约束

这是我的查询;

 CREATE TABLE IF NOT EXISTS `smartbusarrival_sbaDB`.`reservation` (
 `res_id` INT NOT NULL,
 `user_id` INT NOT NULL,
 `bus_id` INT NOT NULL,
 `trip_id` INT NOT NULL,
 `date` DATE NOT NULL, 
 `start` INT NOT NULL,
 `end` INT NOT NULL,
 PRIMARY KEY (`res_id`),
 INDEX `fk_user_id` (`user_id` ASC),
 INDEX `fk_bus_id` (`bus_id` ASC),
 INDEX `fk_trip_id` (`trip_id` ASC),
 INDEX `fk_start` (`start` ASC),
 INDEX `fk_end` (`end` ASC),
 CONSTRAINT `fk_reservation_user`
   FOREIGN KEY (`user_id`)
   REFERENCES `smartbusarrival_sbaDB`.`users` (`id`)
   ON DELETE NO ACTION
   ON UPDATE NO ACTION,
 CONSTRAINT `fk_reservation_bustrip`
   FOREIGN KEY (`bus_id`,`trip_id`)
   REFERENCES `smartbusarrival_sbaDB`.`bustrip` (`bus_id`,`trip_id`)
   ON DELETE NO ACTION
   ON UPDATE NO ACTION,
CONSTRAINT `fk_reservation_start`
   FOREIGN KEY (`start`)
   REFERENCES `smartbusarrival_sbaDB`.`trip_halt` (`tag`)
   ON DELETE NO ACTION
   ON UPDATE NO ACTION,
CONSTRAINT `fk_reservation_end`
   FOREIGN KEY (`end`)
   REFERENCES `smartbusarrival_sbaDB`.`trip_halt` (`tag`)
   ON DELETE NO ACTION
   ON UPDATE NO ACTION)
ENGINE = InnoDB;

user_id是来自用户表的外来表(主键)

bus_id + trip_id是来自bustrip表(主键)的复合键

start和end是来自trip_halt表的外键。

我调查了类似的问题,但没有解决我的问题。任何人都可以建议解决这个问题。 谢谢!!!

1 个答案:

答案 0 :(得分:0)

您作为外键引用的字段应该是唯一的。我认为'tag'字段不是唯一的。