2014-10-27 3 views
0

Когда я пытаюсь установить иностранный ключ, он бросает номер ошибки 150.SQLfiddle Errno: 150 - Внешний ключ Выпуск

схемы Создание Failed: Невозможно создать стол «» db_2_f856e.urlnames

Это код:

create table images(
    id int auto_increment primary key 
    ,gender varchar(6) 
    ,pattern varchar(50) 
    ,item_name varchar(25) 
    ,url_id int(250) 
)// 

create table urlnames(
    url_id_no int(250) 
    ,url varchar(250) 
    ,foreign key (url_id_no) references images(url_id) 
)// 

Может кто-то объяснить, почему он не работает?

Thanks

ответ

1

Ваша структура данных не имеет смысла. Я думаю, что вы хотите:

create table urlnames(
    url_id_no int auto_increment primary key, 
    url varchar(250) 
); 

create table images(
    image_id int auto_increment primary key, 
    gender varchar(6), 
    pattern varchar(50), 
    item_name varchar(25), 
    url_id int(250) references urlnames(url_id_no) 
); 

Любой столбец ссылается внешний ключ ссылки должен быть первичный ключ или уникальный ключ. И, urlnames должен иметь свой столбец id, объявленный как первичный ключ.

Here - пример SQL Fiddle.

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