2013-06-21 2 views
0

Я пытаюсь выполнить следующую команду:Я получаю ошибку, пытаясь создать таблицу в PHPMyAdmin

CREATE TABLE IF NOT EXISTS table_name (
user_id int(11) NOT NULL, 
other_id int(11) NOT NULL, 
FOREIGN KEY (user_id) REFERENCES users(id), 
FOREIGN KEY (other_id) REFERENCES other_table(id), 
PRIMARY KEY (user_id, other_id) 
); 

и получить следующее сообщение об ошибке:

#1005 - Can't create table 'database_name.table_name' (errno: 150) 

я делаю что-то не так? Это прекрасно работает, просто запуская его в другой среде, а не в среде phpmyadmin sql.

ответ

1

Посмотрите на это SO question.

Обратите внимание на правильный ответ. Проверить тип колонок Они должны соответствовать. Может быть, ваша проблема.

В целом, вот авторитетный справочник по FK in Mysql.

In addition to SHOW ERRORS, in the event of a foreign key error involving InnoDB tables (usually Error 150 in the MySQL Server), you can obtain a detailed explanation of the most recent InnoDB foreign key error by checking the output of SHOW ENGINE INNODB STATUS.

EDIT: Включение комментариев

Таблица на PHPMyAdmin были недобросовестный MyISAM. На локальном уровне они не принимали значения InnoDB. MyISAM не поддерживает FK. Это не полностью объясняет разницу, основанную на MySql Documentation. Она должна работать, не создавая FK. (Возможно, проблема настройки или более поздняя версия Issue)

+0

я просто удостоверился типы столбцов как то же существо INT (11) ... – Baraa

+0

Проверяя SHOW ENGINE INNODB STATUS. Также оба они должны быть подписаны/без знака. –

+0

так ... Я просто протестировал этот же код sql на моей настройке phpmyadmin через bluehost ... а не на свой локальный phpmyadmin (из wamp), и он отлично работал без ошибок ... – Baraa

0

Есть users и other_table есть?

Вы не можете иметь ссылки на внешние ключи к несуществующим таблицам.

После этого вы можете добавить ссылки: alter table.

+0

Они уже существуют как пользователь и other_table ... – Baraa

0
DROP TABLE IF EXISTS `table_name`; 
CREATE TABLE IF NOT EXISTS table_name (
user_id int(11) NOT NULL, 
other_id int(11) NOT NULL, 
FOREIGN KEY (user_id) REFERENCES users(id), 
FOREIGN KEY (other_id) REFERENCES other_table(id), 
PRIMARY KEY (user_id, other_id) 
);