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.