Я пытаюсь создать 5 таблиц (не должно быть слишком сложно), но у меня возникают проблемы с назначением внешних ключей. PhpMyAdmin дает мне эту ошибку:Проблемы с добавлением CONSTRAINT FOREIGN KEY в PhpMyAdmin
Can't create table 'databasexx.gave' (errno: 150)
В основном созданы все таблицы без внешних ключей.
DROP TABLE IF EXISTS oppbygging;
CREATE TABLE oppbygging (
gnr INT,
dnr INT,
ant INT,
CONSTRAINT dnr_grn_pk PRIMARY KEY (gnr, dnr)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS onske;
CREATE TABLE onske (
onr INT,
pnr INT,
gnr INT,
prioriet INT,
ferdig INT,
CONSTRAINT pnr_gnr_pk PRIMARY KEY (pnr, gnr)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS person;
CREATE TABLE person (
pnr INT,
fornavn VARCHAR(64),
etternavn VARCHAR(64),
fdato DATE,
CONSTRAINT pnr_pk PRIMARY KEY (pnr),
CONSTRAINT person_pnr_fk FOREIGN KEY (pnr) REFERENCES onske(pnr)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS gave;
CREATE TABLE gave
(
gnr int,
navn varchar (255) UNIQUE,
prod_tid int NOT NULL,
CONSTRAINT gnr_pk PRIMARY KEY (gnr),
CONSTRAINT gave_gnr_fk FOREIGN KEY (gnr) REFERENCES oppbygging(gnr),
CONSTRAINT gave_gnr_fk FOREIGN KEY (gnr) REFERENCES onske(gnr)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS del;
CREATE TABLE del (
dnr INT,
navn VARCHAR(64),
lager_ant INT NOT NULL,
CONSTRAINT dnr_pk PRIMARY KEY (dnr),
CONSTRAINT del_dnr_fk FOREIGN KEY (dnr) REFERENCES oppbygging(dnr)
) ENGINE=InnoDB;
Уверен, что я делаю какую-то очевидную ошибку, но я просто не могу понять это. Любая помощь будет очень высоко ценится.
Вот вид отношения, игнорировать Eiendom таблицу:
Внешний ключ ссылка на MUS * * полный первичный ключ. У вас не может быть ссылки на «частичный ПК». Поэтому 'person' должен содержать столбцы' pnr' ** и ** 'gnr' для ссылок' onske' –
Спасибо за быстрый ответ! Вы правы, это была ошибка. Однако я все еще получаю это при попытке запустить код http://i.imgur.com/1gIHn2O.png Связанный код теперь выглядит следующим образом: http://i.imgur.com/wUZrOrb.png – Jogex