尝试创建外键时出错(1005)

时间:2016-11-05 21:26:05

标签: mysql

我正在尝试创建一个基本的外部约束,但是我遇到了语法错误。 #1005 - Can't create table 'my_database'.'#sql-334f_952bc' (errno: 150 "Foreign key constraint is incorrectly formed")

我首先创建表,然后使用'alter table'方法创建外部约束。

创建表格:

CREATE TABLE `tbl_flights` (
  `flight_id`      int(11)       NOT NULL AUTO_INCREMENT
  `aircraft_id`    int(11)       NOT NULL
  `date`           date          NOT NULL
  `auth_by`        varchar(255)  NOT NULL
  `auth_duration`  time          NOT NULL
  PRIMARY KEY (`flight_id`)
)
;

CREATE TABLE `tbl_aircraft` (
  `aircraft_id`    int(11) NOT NULL AUTO_INCREMENT
  `registration`   char(6) NOT NULL
  `insurance`      date    NOT NULL
  `awrc`           date    NOT NULL
  PRIMARY KEY (`aircraft_id`) 
)
;

创建外键/约束:

ALTER TABLE `tbl_aircraft` 
ADD CONSTRAINT  `fk_aircraft_id` FOREIGN KEY ( `aircraft_id` ) 
REFERENCES `my_database`.`tbl_flights` ( `aircraft_id` ) 
ON DELETE RESTRICT ON UPDATE CASCADE ;

如果有人能在这里发现问题我会非常感激。

1 个答案:

答案 0 :(得分:0)

基于错误消息 可能你错过了;在声明的最后

CREATE TABLE `tbl_flights` (
  `flight_id`      int(11)       NOT NULL AUTO_INCREMENT
  `aircraft_id`    int(11)       NOT NULL
  `date`           date          NOT NULL
  `auth_by`        varchar(255)  NOT NULL
  `auth_duration`  time          NOT NULL
  PRIMARY KEY (`flight_id`)
)
; /* add this */

CREATE TABLE `tbl_aircraft` (
  `aircraft_id`    int(11) NOT NULL AUTO_INCREMENT
  `registration`   char(6) NOT NULL
  `insurance`      date    NOT NULL
  `awrc`           date    NOT NULL
  PRIMARY KEY (`aircraft_id`) 
)
; /* add this*/

可能是你已经倒转了表

 ALTER TABLE `tbl_flights` 
 ADD CONSTRAINT  `fk_aircraft_id` FOREIGN KEY ( `aircraft_id` ) 
 REFERENCES `my_database`.`tbl_aircraft` ( `aircraft_id` ) 
 ON DELETE RESTRICT ON UPDATE CASCADE ;

或者您必须在TABLE tbl_aircraft

中添加外来列