2016-11-05 5 views
0

Я пытаюсь создать основное внешнее ограничение, однако я получаю синтаксическую ошибку. #1005 - Can't create table 'my_database'.'#sql-334f_952bc' (errno: 150 "Foreign key constraint is incorrectly formed")Ошибка (1005) при попытке создать внешний ключ

Сначала создаю таблицы, а затем использую метод «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 ; 

Если кто-то может определить проблему здесь я бы очень признателен.

ответ

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 ; 

или вы должны добавить внешний столбец в таблице tbl_aircraft

+0

Спасибо, я добавил ';' и я получаю другую ошибку: errno: 150 «Внешнее ограничение ключа неверно сформировано» –

+0

хорошо это означает, что ваше сообщение об ошибке в решении .. + – scaisEdge

+0

. Есть еще проблема. Я обновил вопрос. –

Смежные вопросы