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

标签 mysql

我正在尝试创建基本的外部约束,但是出现语法错误。 #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/

相关文章:

mysql - 如何从 mysqlhotcopy 导入数据库表?

php - 如何将存储的数据库 utc 时间戳数据转换为 PHP 中的本地时区

java - JDBC(mysql)在堆内存中保存查询

mysql - 具有未定义列的 SQL 数据库

mysql - 如何在 mysql 查询中对字符串的数字部分进行计算

mysql - 使用 MySQL 生成按货币分组的填补空白的每日销售报告

php - 优化查询以确定值介于最小值和最大值之间

php - 在 MySQL 查询中添加 PHP 变量的正确方法?

mysql - SequoiaDB连接MySQL建表出现 "SDB_RTN_COORD_ONLY"错误如何解决?

mysql - 使用 group by 的 sql 查询