2013-12-17 7 views
0

Я получаю сообщение об ошибке 150, когда я запускаю это. Другими таблицами являются InnoDB, типы являются первичным ключом и соответствуют типам данных. Поэтому я не вижу, что я делаю неправильно (и я не вижу очевидных синтаксических ошибок). Есть идеи?MySQL не может создать новую таблицу с использованием внешних ключей

CREATE TABLE grouptosite (
    groups_id BIGINT(20), 
    usertogroup_groupID BIGINT(20), 
usertogroup_userID BIGINT(20), 
    usertosite_id INT(10), 

    gts_id INT(10) AUTO_INCREMENT NOT NULL, 
    PRIMARY KEY (gts_id), 
index (gts_id), 
index (groups_id), 
    index (usertogroup_groupID), 
index (usertogroup_userID), 
    index (usertosite_id), 

FOREIGN KEY (groups_id) 
    REFERENCES groups(id) 
    ON UPDATE CASCADE ON DELETE RESTRICT, 
    FOREIGN KEY (usertogroup_groupID, usertogroup_userID) 
    REFERENCES usertogroup(groupID, userID) 
    ON UPDATE CASCADE ON DELETE RESTRICT, 
    FOREIGN KEY (usertosite_id) 
    REFERENCES usertosite(id) 
    ON UPDATE CASCADE ON DELETE RESTRICT 
) ENGINE=INNODB; 
+0

Это должно решить ваши проблемы http://stackoverflow.com/questions/825362/mysql-error-150-foreign-keys – user2600629

+0

Как выглядят таблицы 'groups',' usertogroup' и 'usertosite'? –

+0

Вы уверены, что ваши столбцы одного типа? Сначала я создал таблицу usertosite с идентификатором BIGINT (по той же схеме других таблиц), но поле grouptosite.usertosite_id было INT. http://sqlfiddle.com/#!2/d821a – xecaps12

ответ

1

Вы уверены, что ваши колонки одного типа? Сначала я создал таблицу usertosite с идентификатором BIGINT (следуя той же схеме других таблиц), но столбец grouptosite.usertosite_id был INT: http://sqlfiddle.com/#!2/d821a.

Как уже упоминалось в другом комментарии, типы данных для foreign keys должны быть одинаковыми.

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