我放弃了,我已经重写了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)NOT NULL,estilo
varchar(100)NOT NULL,主键(
nomejogo
,estilo
),对外键(
nomejogo
)引用randomgame
(nomejogo
)的更新在删除级联上无操作,关于更新的外键(
estilo
)参考estilos
(estilo
)对删除级联无作用)ENGINE = InnoDB
MySQL说:文档
'#'1215-无法添加外键约束
最佳答案
表中的FOREIGN KEY指向另一个表中的PRIMARY KEY。
在将PRIMARY KEY从codestilo更改为estilo并删除AUTO_INCREMENT之后,以下SQL正常工作:
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;