Внешние ключи

 
0
 
MySQL
ava
4итер | 29.03.2013, 16:29
При попытки связать внешние ключи с первичными, выскакивает ошибка

Can't create table '.\tablica\svyaz.frm' (errno: 150)


вот код:

create table svyaz (
id1 varchar(10) not null,
id2 varchar(10) not null,
foreign key(id1) references postavki(id1),
foreign key(id2) references postav(id2)) type=InnoDB;


Первичные ключи в предыдущих таблицах id1, id2 обозначил. В чем может быть проблема?
Ответы (8)
ava
lancelot555 | 29.03.2013, 15:32 #
Проверь типы и размеры полей id1 , id2
Они должны быть одинаковы
ava
4итер | 29.03.2013, 15:35 #
lancelot555, вроде везде стоит тип varchar и тип таблицы одинаковый..
ava
Akina | 29.03.2013, 15:51 #
Цитата (4итер @  29.3.2013,  16:35 findReferencedText)
везде стоит тип varchar 

Укажи длину.
ava
4итер | 29.03.2013, 15:53 #
Akina, varchar(10) стоит, все равно ошибка
ava
lancelot555 | 29.03.2013, 15:57 #
Для ключей вообще лучше INT использовать, наверняка можно без varchar обойтись
ava
Akina | 29.03.2013, 16:25 #

mysql> CREATE TABLE parent (id INT NOT NULL,
    -> txt varchar(10),
    -> primary key (id),
    -> unique index (txt)
    -> );
Query OK, 0 rows affected (0.16 sec)

mysql> CREATE TABLE child (id INT, parent_txt varchar(10),
    -> INDEX par_ind (parent_txt),
    -> FOREIGN KEY (parent_txt) REFERENCES parent(txt)
    -> );
Query OK, 0 rows affected (0.25 sec)
ava
4итер | 29.03.2013, 16:38 #
Akina, юмор ваш неуместен. Ошибка была в том, что использовал тип varchar вместо integer. Спасибо за помощь всем)
ava
Akina | 29.03.2013, 16:45 #
Цитата (4итер @  29.3.2013,  17:38 findReferencedText)
Ошибка была в том, что использовал тип varchar вместо integer.

Что за бред? я тебе прямо цитатой с консоли показываю внешние varchar(10) ключи. Прекрасно всё создаётся.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить