mysql workbenchからエンジニアを転送しようとしているときにエラー'#1215 Cannot add foreign key'
と表示されています。外部キーを追加できません#1215
私はスケールとエンティティテーブルの列を参照する矩形テーブルを持っています。 create rectangle文はエラーをスローします。 MySQL Error 1215: Cannot add foreign key constraintが同じことを求めて:
これは私のスキーマ
-- -----------------------------------------------------
-- Table `newDb`.`Scales`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `newDb`.`Scales` (
`idScales` INT NOT NULL AUTO_INCREMENT,
`scale_name` VARCHAR(100) NULL,
`pid` INT NULL,
`col_Id` INT NULL,
`type` VARCHAR(45) NULL,
`range_from` INT NULL,
`range_to` INT NULL,
`bandpadding` INT NULL,
PRIMARY KEY (`idScales`),
UNIQUE INDEX `idScales_UNIQUE` (`idScales` ASC),
INDEX `pid_idx` (`pid` ASC),
INDEX `col_id_idx` (`col_Id` ASC),
CONSTRAINT `pid`
FOREIGN KEY (`pid`)
REFERENCES `newDb`.`projects` (`pid`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `col_id`
FOREIGN KEY (`col_Id`)
REFERENCES `newDb`.`data_sets_columns` (`col_Id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `newDb`.`Entities`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `newDb`.`Entities` (
`idEntities` INT NOT NULL AUTO_INCREMENT,
`entity_name` VARCHAR(100) NULL,
`entity_type` VARCHAR(45) NULL,
`pid` INT NOT NULL,
PRIMARY KEY (`idEntities`),
UNIQUE INDEX `idEntities_UNIQUE` (`idEntities` ASC),
INDEX `pid_idx` (`pid` ASC),
CONSTRAINT `pidEF`
FOREIGN KEY (`pid`)
REFERENCES `newDb`.`projects` (`pid`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `newDb`.`Rectangle`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `newDb`.`Rectangle` (
`idRectangle` INT NOT NULL AUTO_INCREMENT,
`rect_name` VARCHAR(100) NULL,
`X_pos` INT NOT NULL DEFAULT 0,
`Y_pos` INT NOT NULL DEFAULT 0,
`Height` INT NOT NULL DEFAULT 50,
`Width` INT NOT NULL DEFAULT 50,
`Offset_X` INT NOT NULL DEFAULT 0,
`Offset_Y` INT NOT NULL DEFAULT 0,
`Opacity` INT NULL DEFAULT 100,
`Color` VARCHAR(10) NOT NULL DEFAULT 'black',
`idScale` INT NOT NULL,
`idEntities` INT NOT NULL,
`idColorScale` INT NULL,
PRIMARY KEY (`idRectangle`),
UNIQUE INDEX `idRectangle_UNIQUE` (`idRectangle` ASC),
INDEX `idScales_idx` (`idScale` ASC, `idColorScale` ASC),
INDEX `idEntities_idx` (`idEntities` ASC),
CONSTRAINT `idScalesF`
FOREIGN KEY (`idScale` , `idColorScale`)
REFERENCES `newDb`.`Scales` (`idScales` , `idScales`)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
CONSTRAINT `idEntitiesF`
FOREIGN KEY (`idEntities`)
REFERENCES `newDb`.`Entities` (`idEntities`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
ある別の質問があります。
私はそれに続いて、答えに応じて、不一致のエンジン、不一致の列の種類、または不一致の列のいずれかがあります。
参照されているすべての列と外部キーcoloumnsは符号なしINTであり、名前は同じで、エンジンはINNODBなので、私は不一致は見えません。
は、私は以下の制約が意味をなさないここ
どのCREATE TABLEがそのエラーを投げていますか? – duskwuff
スケールとエンティティテーブルから列を参照するときに、矩形を作成すると言います。 – Snedden27