Я сдаюсь, я переписал код 3 раза, и я не могу найти проблему в коде … Я сделал много сложных баз данных, но я не могу найти, что не так в этой маленькой вещи … вот код и ошибка в конце.
Спасибо 🙂
create database whatgameshouldiplay;
use whatgameshouldiplay;
CREATE TABLE `randomgame` (
`nomejogo` varchar(100) NOT NULL,
PRIMARY KEY (`nomejogo`)
) ENGINE=InnoDB;
create table `estilos` (
`codestilo` int(100) NOT NULL AUTO_INCREMENT,
`estilo` varchar(100) NOT NULL,
PRIMARY KEY (`codestilo`)
) ENGINE=InnoDB;
Create table `gameEstilos`(
`nomejogo` varchar(100) NOT NULL,
`estilo` varchar(100) NOT NULL,
primary key(`nomejogo`,`estilo`),
FOREIGN KEY (`nomejogo`) REFERENCES `randomgame` ( `nomejogo` ) ON UPDATE NO ACTION ON DELETE CASCADE,
FOREIGN KEY ( `estilo` ) REFERENCES `estilos` ( `estilo` ) ON UPDATE NO ACTION ON DELETE CASCADE
) ENGINE=InnoDB;
ошибка
SQL-запрос:
Создать таблицу gameEstilos
(
nomejogo
varchar (100) НЕ NULL,
estilo
varchar (100) НЕ NULL,
основной ключ(nomejogo
,estilo
),
ИНОСТРАННЫЙ КЛЮЧ (nomejogo
) РЕКОМЕНДАЦИИ randomgame
( nomejogo
) В ОБНОВЛЕНИИ НЕТ ДЕЙСТВИЙ ПО УДАЛЕНИЮ КАСКАДА,
ИНОСТРАННЫЙ КЛЮЧ ( estilo
) РЕКОМЕНДАЦИИ estilos
( estilo
) В ОБНОВЛЕНИИ НЕТ ДЕЙСТВИЙ ПО УДАЛЕНИЮ КАСКАДА
) ДВИГАТЕЛЬ = InnoDB
MySQL сказал: Документация
‘#’ 1215 — Невозможно добавить ограничение внешнего ключа
ИНОСТРАННЫЙ КЛЮЧ в таблице указывает на ПЕРВИЧНЫЙ КЛЮЧ в другой таблице.
Ниже SQL работают после изменения PRIMARY KEY с codetilo на estilo, а также удалены AUTO_INCREMENT:
CREATE TABLE `randomgame` (
`nomejogo` varchar(100) NOT NULL,
PRIMARY KEY (`nomejogo`)
) ENGINE=InnoDB;
create table `estilos` (
`codestilo` int(100) NOT NULL ,
`estilo` varchar(100) NOT NULL,
PRIMARY KEY (`estilo`)
) ENGINE=InnoDB;
Create table `gameEstilos`(
`nomejogo` varchar(100) NOT NULL,
`estilo` varchar(100) NOT NULL,
primary key(`nomejogo`,`estilo`),
FOREIGN KEY (`nomejogo`) REFERENCES `randomgame` ( `nomejogo` ) ON UPDATE NO ACTION ON DELETE CASCADE,
FOREIGN KEY ( `estilo` ) REFERENCES `estilos` ( `estilo` ) ON UPDATE NO ACTION ON DELETE CASCADE
) ENGINE=InnoDB;
Других решений пока нет …