我放弃了,我已经重写了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,
        主键(nomejogoestilo),
        对外键(nomejogo)引用randomgamenomejogo)的更新在删除级联上无操作,
        关于更新的外键(estilo)参考estilosestilo)对删除级联无作用
)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;

10-05 20:39
查看更多