2013-09-18 4 views
0

Я пытаюсь вставить внешние ключи в свою базу данных, но в некоторых случаях я не могу заставить этого работать, пока мои другие внешние ключи в порядке. Я уже искал ответы, и я проверил свои типы, но до сих пор не могу найти проблему. (С помощью MySQL Workbench)mysql add foreign key error 1215

Table 1: klant 
klantnaam VARCHAR(45) PK NN 
fabriek VARCHAR(45) PK NN 
machine VARCHAR(45) NN 

Table 2: machine 
machine VARCHAR(45) PK NN 
fabriek VARCHAR(45) NN 

теперь я хочу machine.fabriek быть внешним ключом (для klant.fabriek).

Так на вкладке «Внешние ключи» я добавить внешний ключ, как:

name: fk_fabriek 
Reference Table: 'slalist' . 'klant' 
Column: fabriek 
Reference Column: fabriek 

, когда я пытаюсь применить эти изменения, я получаю эту ошибку

1215: Cannot add foreign key constraint 
SQL Statement: 
CREATE TABLE `slalist`.`machine` ( 
    `machine` VARCHAR(45) NOT NULL, 
    `fabriek` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`machine`), 
    INDEX `fk_fabriek_idx` (`fabriek` ASC), 
    CONSTRAINT `fk_fabriek` 
    FOREIGN KEY (`fabriek`) 
    REFERENCES `slalist`.`klant` (`fabriek`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 

ли кто-нибудь знает, что я делаю не так? Искал половину паутины, но не смог найти подходящего ответа.

Заранее благодарен!

Герт

ответ

0

внешним ключом в одной таблице указывает на первичный ключ в другой таблице. и в вашем случае «fabriek» не является первичным ключом.

+0

Спасибо, что ответили. Я сделал ошибку типа, «fabriek» является первичным ключом. Между тем я сделал EER в mySQL Workbench и попытался преобразовать его в SQL-скрипт, но, к сожалению, я получил ту же ошибку. Я сделал снимок экрана с моего EER, может быть, вы можете увидеть, что я делаю неправильно. http://tinypic.com/r/20z7hjp/5 - ссылка – GeertG

+0

размещено изображение EER слишком мало. одно предложение проверить ваши таблицы имеет innodb двигатель –

+0

http://i39.tinypic.com/jgntkg.jpg проверьте, что один, нажмите на изображение, которое будет достаточно большим. Я тоже это проверил, каждый стол использует InnoDB – GeertG