Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Error no 1005


Автор: Dzonni 29.1.2008, 01:13
Проблема такая. Надо создать два entity set и relationship между ними . Одна из таблиц имеет participation constraint.

Таблица Team с аттрибутом university (этот аттрибут primary key).
Таблица Person аттрибутом personID (primary key) и university, который является foreign key и указывает на таблицу Team, чтобы указать participation constraint этот аттрибут имеет свойство NOT NULL. (То есть каждый человек должен быть членом одной команды).

Вот в MySql изображаю:

CREATE TABLE  team 
(
university char(50) NOT NULL,
entryFeePaid int(1) NOT NULL,
PRIMARY KEY  (university)
);

все проходит гладко.

Идем дальше...

Create table Person
(
personID char(10) NOT NULL,
name char(35) NOT NULL,
experienceLevel char(20) NOT NULL,
university char(50) NOT NULL,
primary key (personID),
foreign key (university) references team
);

Тут выплевывает ошибку 1005.

Я гуглил по ошибке, понял так, что я не в правильном порядке создаю таблицы, что таблицу мастер создаю раньше, чем зависимую (дословно с форума)... Странно, но пробовал наоборот, все равно.

Версия Mysql: 5.0

Помогите, где я чего-то недопонял?

Автор: Dzonni 29.1.2008, 01:37
Ладно, вроде сам нашел ответ:

create table person (
personID INT(5),
name char(30),
university char(50) NOT NULL,
primary key (personID),
foreign key (university) references team(university)
);

Только что такое INDEX? Например отсюда из комментов: http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html

Автор: Dzonni 29.1.2008, 01:58
Блин, опять не работает...

create table memberOf (
personID char(50) NOT NULL,
university char(50) NOT NULL,
primary key (personID),
INDEX (personID),
foreign key personID) references person(personID),
INDEX (university),
foreign key (university) references team(university)
);

Та же 1005 ошибка. Почему?
И что это за INDEX? Я выловил его из описания на сайте MySQL, но его присутствие/отсутствие ничего не меняет : (

Автор: Dzonni 30.1.2008, 15:53
Ладно, раз никто не может/хочет отвечать тему можно удалить!

Спасибо!

Автор: skyboy 30.1.2008, 16:01
Цитата(Dzonni @  29.1.2008,  00:13 Найти цитируемый пост)
Тут выплевывает ошибку 1005.

сообщение об ошибке отсутствует напрочь? просто "error 1005"?

Автор: igorold 30.1.2008, 16:05
Dzonni, ты обратил внимание, что там везде указано ENGINE=INNODB; при создании таблиц?

потому что:
Код

Both tables must be InnoDB tables and they must not be TEMPORARY tables.


а про INDEX - можешь пока без них обойтись, если тебе нужны индексы - прочитай что это ... в данном случае ошибка явно не из-за них ... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)