Prosta baza i dziwny problem (errno 150)

0

Witajcie.

Mam takie 4 proste tabelki - prosty projekt który robię to coś w rodzaju aplikacji raportowania zleceń serwisowych. Jedna to dane firm, druga - dane części, trzecia - dane zleceń, a czwarta to tabela relacji wiele do wiele między częściami a zleceniami (w jednym zleceniu serwisowym mogło zostać wymienione wiele części). Oto one:

CREATE TABLE firmy
(
	id_firmy mediumint unsigned not null auto_increment primary key,
	nazwa varchar(50),
	adres varchar(50)
);
CREATE TABLE zgloszenia
(
	id_zgloszenia mediumint unsigned not null auto_increment primary key,
	id_firmy mediumint unsigned,
	data date,
	rodzaj varchar(20),
	nazwisko varchar(50),
	liczba_czesci int,
	koszt decimal(6,2),
	uwagi varchar(255),
	constraint FK_zg_firma foreign key(id_firmy) references firmy(id_firmy)
	on delete restrict
);
CREATE TABLE czesci_serwisowe
(
	id_czesci mediumint unsigned not null auto_increment primary key,
	nazwa varchar(40),
	marka varchar(40),
	model varchar(40),
	numer_seryjny varchar(40),
	ilosc int,
	cena decimal(6,2)
);
CREATE TABLE zgloszenia_czesci
(
	id_rekordu mediumint unsigned not null auto_increment primary key,
	id_czesci mediumint unsigned not null,
	id_zgloszenia mediumint unsigned not null
);

Ostatnia tabelka nie ma określonych kluczy obcych, bo tu właśnie jest problem - dziwny, otóż określenie klucza obcego na id_zgloszenia:

ALTER TABLE zgloszenia_czesci ADD
constraint FK_uc_zgloszenie foreign key(id_zgloszenia) references zgloszenia(id_zgloszenia) on delete restrict;

wykonuje się poprawnie, natomiast w identyczny sposób określenie klucza obcego na id_czesci:

ALTER TABLE zgloszenia_czesci ADD
constraint FK_uc_czesc foreign key(id_czesci) references czesci(id_czesci) on delete restrict;

zwraca komunikat: ERROR 1005 (HY0000): Can't create table 'serviceform.#sql-7fc_2' (errno: 150)

Otrzymany błąd mi nic nie mówi poza tym, że śmierdzi linuksem.
Szukałem różnych informacji na ten temat, każda propozycja rozwiązania była inna, ale wszystkie łączyło jedno - w moim przypadku nie działały.

Dzięki z góry za wszelką pomoc.

0

gdzie jest ta tabela czesci?? Bo ja widzę tylko czesci_serwisowe

0

uhm, FAIL.
Tak to jest jak zamiast 'czesci doesn't exist/not declared' dostaje się 'errno 150' - co jednak nie zmienia faktu, że powinienem to zauważyć.
Dzięki i pozdrawiam!

0
  1. pisze, że nie może stworzyć tabeli
  2. wpisujesz w google "mysql 1005" bo kod błędu to nie 150 tylko 1005
  3. i masz http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html gdzie ten błąd jest opisany (CTRL+F i pisujesz 1005)

1 użytkowników online, w tym zalogowanych: 0, gości: 1