MySQL外键错误1005错误150
我正在使用MySQL Workbench做一个小型数据库。我有一个名为“Immobili”的主表,它有一个由四列组成的主键:( Comune,Via,Civico,Immobile)。
现在,我还有另外三个表,它们具有相同的主键(Comune,Via,Civico,Immobile),但这些字段也引用了表Immobili。
第一个问题:我可以制作一个也是外键的主键吗?
第二个问题:当我尝试导出更改时,它说:在服务器中执行SQL脚本
# ERROR: Error 1005: Can't create table 'dbimmobili.condoni' (errno: 150)CREATE TABLE IF NOT EXISTS `dbimmobili`.`Condoni` ( `ComuneImmobile` VARCHAR(50) NOT NULL , `ViaImmobile` VARCHAR(50) NOT NULL , `CivicoImmobile` VARCHAR(5) NOT NULL , `InternoImmobile` VARCHAR(3) NOT NULL , `ProtocolloNumero` VARCHAR(15) NULL , `DataRichiestaSanatoria` DATE NULL , `DataSanatoria` DATE NULL , `SullePartiEsclusive` TINYINT(1) NULL , `SullePartiComuni` TINYINT(1) NULL , `OblazioneInEuro` DOUBLE NULL , `TecnicoOblazione` VARCHAR(45) NULL , `TelefonoTecnico` VARCHAR(15) NULL , INDEX `ComuneImmobile` (`ComuneImmobile` ASC) , INDEX `ViaImmobile` (`ViaImmobile` ASC) , INDEX `CivicoImmobile` (`CivicoImmobile` ASC) , INDEX `InternoImmobile` (`InternoImmobile` ASC) , PRIMARY KEY (`ComuneImmobile`, `ViaImmobile`, `CivicoImmobile`, `InternoImmobile`) , CONSTRAINT `ComuneImmobile` FOREIGN KEY (`ComuneImmobile` ) REFERENCES `dbimmobili`.`Immobile` (`ComuneImmobile` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ViaImmobile` FOREIGN KEY (`ViaImmobile` ) REFERENCES `dbimmobili`.`Immobile` (`ViaImmobile` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `CivicoImmobile` FOREIGN KEY (`CivicoImmobile` ) REFERENCES `dbimmobili`.`Immobile` (`CivicoImmobile` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `InternoImmobile` FOREIGN KEY (`InternoImmobile` ) REFERENCES `dbimmobili`.`Immobile` (`InternoImmobile` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB
显示引擎状态:
表dbimmobili / valutazionimercato的外键约束出错:
在引用的表中找不到索引,其中引用的列显示为第一列,或者表中的列类型和引用的表与约束不匹配。请注意,使用> = InnoDB-4.1.12创建的表中ENUM和SET的内部存储类型已更改,旧表中的此类列不能被新表中的此类列引用。
我做错了什么?
有只小跳蛙
侃侃尔雅
相关分类