2017-01-17 18 views
0

Что не так с этим кодом MySQL таблицы сценария ?:MySQL 5.7 Windows, проблема с ключевым ключом?

CREATE TABLE `securities_master`.`symbol` (
    `id` INT NOT NULL, 
    `exchange_id` INT NULL, 
    `ticker` VARCHAR(32) NOT NULL, 
    `instrument` VARCHAR(64) NOT NULL, 
    `name` VARCHAR(255) NULL, 
    `sector` VARCHAR(255) NULL, 
    `currency` VARCHAR(32) NULL, 
    `created_date` DATETIME NOT NULL, 
    `last_updated_date` DATETIME NOT NULL, 
    PRIMARY KEY (`id`), FOREIGN KEY 'index_exchange_id' ('exchange_id')) 
ENGINE = InnoDB AUTO_INCREMENT = 1 
DEFAULT CHARACTER SET = utf8; 

Я думаю, что это «FOREIGN KEY», но я не уверен,

+1

Вы, кажется, отсутствует ЛИТЕРАТУРЫ часть добавления внешнего ключа. http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html –

ответ

1

Одинарные кавычки обозначают строковые литералы в SQL. Имена объектов (например, имя ограничения и столбцов, на которые ссылается) должны быть обозначены, или обратные кавычки вообще ничего:

CREATE TABLE `securities_master`.`symbol` (
    `id` INT NOT NULL, 
    `exchange_id` INT NULL, 
    `ticker` VARCHAR(32) NOT NULL, 
    `instrument` VARCHAR(64) NOT NULL, 
    `name` VARCHAR(255) NULL, 
    `sector` VARCHAR(255) NULL, 
    `currency` VARCHAR(32) NULL, 
    `created_date` DATETIME NOT NULL, 
    `last_updated_date` DATETIME NOT NULL, 
    PRIMARY KEY (`id`), 
    FOREIGN KEY `index_exchange_id` (`exchange_id`) 
    -- Here ----^-----------------^--^-----------^ 
) 
ENGINE = InnoDB AUTO_INCREMENT = 1 
DEFAULT CHARACTER SET = utf8; 
+0

Я пробовал это, но это не сработало, никаких других предложений? – PapaSmurf