【发布时间】:2019-02-18 00:59:29
【问题描述】:
这是我的代码,我无法继续,因为我总是收到外键约束错误。我检查了它们是一致的数据类型。我哪里错了?在需要外键的地方,所有问题仍然存在。我刚刚在这里张贴了两张桌子。
-- -----------------------------------------------------
-- Table `44376936`.`AccountType`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `44376936`.`AccountType` ;
CREATE TABLE IF NOT EXISTS `44376936`.`AccountType` (
`AccountTypeID` float NOT NULL,
`AccountTypeName` VARCHAR(45) NULL,
`AccountTypeDesc` VARCHAR(45) NULL,
`AccountTypeInterestRate` FLOAT NULL,
`AccountTypeServiceFee` FLOAT NULL,
PRIMARY KEY (`AccountTypeID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `44376936`.`Account`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `44376936`.`Account` ;
CREATE TABLE IF NOT EXISTS `44376936`.`Account` (
`AccountBSB` INT NOT NULL,
`AccountNumber` INT NOT NULL,
`AccountCurrentBalance` FLOAT NULL,
`AccountType_AccountTypeID` Float NOT NULL,
PRIMARY KEY (`AccountBSB`, `AccountNumber`, `AccountType_AccountTypeID`),
INDEX `fk_Account_AccountType_idx` (`AccountType_AccountTypeID` ASC),
CONSTRAINT `fk_Account_AccountType`
FOREIGN KEY (`AccountType_AccountTypeID`)
REFERENCES `44376936`.`AccountType` (`AccountTypeID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
【问题讨论】:
-
@MadhurBhaiya 为什么要先插入数据?那不应该是必要的。如果有的话,它更有可能产生问题。此外,谁说还存在任何数据?我很想知道您提出建议的理由。
-
Anim 你能告诉我们错误信息的确切全文吗?
-
@ADyson 建议使用 mysqldump 并重新导入转储
-
这可能对你有帮助,percona.com/blog/2017/04/06/…
-
@MadhurBhaiya 即使这就是这里发生的事情,它仍然与问题无关。并且在添加约束之前添加数据 是有风险的,以防数据违反约束,并且因此无法添加约束。这不是一个好建议IMO。如果您有推荐这种做法的信誉良好的来源,请链接到它,我总是很高兴得到纠正,但 AFAIK 这不是一个好主意。