我正在尝试创建基本的外部约束,但是出现语法错误。 #1005 - 无法创建表“my_database”。“#sql-334f_952bc”(errno:150“外键约束格式不正确”)
我首先创建表,然后使用“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 ;
如果有人能找出这里的问题,我将不胜感激。
最佳答案
错误消息中的碱基 可能你错过了;在声明的末尾
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 ;
或者您必须在表中添加外部列tbl_aircraft
关于mysql - 尝试创建外键时出错 (1005),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443380/