gpt4 book ai didi

MySQL 外键约束不兼容

转载 作者:行者123 更新时间:2023-12-05 05:05:03 26 4
gpt4 key购买 nike

MySQL 版本 8.0.17

完整错误如下:

Referencing column 'groupLineId' and referenced column 'groupLineId' in foreign key constraint 'salesItemLine-groupLine' are incompatible

我试图通过 groupLineId 链接两个表,这两个表都不是 NULL VARCHAR(12)。我不确定为什么会收到错误消息。我的数据库中还有其他几个这样的外键关系。

我正在使用以下代码生成这两个表。 (注意:未显示发票表代码)

CREATE TABLE IF NOT EXISTS `reports`.`groupLine` (
`groupLineId` VARCHAR(12) NOT NULL,
`lineNum` INT NOT NULL,
`invoiceId` VARCHAR(12) NOT NULL,
PRIMARY KEY (`groupLineId`, `lineNum`, `invoiceId`),
INDEX `groupLine-invoice_idx` (`invoiceId` ASC) VISIBLE,
CONSTRAINT `groupLine-invoice`
FOREIGN KEY (`invoiceId`)
REFERENCES `reports`.`invoice` (`invoiceId`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `reports`.`salesItemLine` (
`groupLineId` VARCHAR(12) NOT NULL,
`lineNum` INT NOT NULL,
`description` VARCHAR(256) NULL,
`amount` DECIMAL NULL,
`detailType` VARCHAR(45) NULL,
PRIMARY KEY (`groupLineId`, `lineNum`),
INDEX `salesItemLine-groupLine_idx` (`groupLineId` ASC) VISIBLE,
CONSTRAINT `salesItemLine-groupLine`
FOREIGN KEY (`groupLineId`)
REFERENCES `reports`.`groupLine` (`groupLineId`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;

最佳答案

如果有人遇到这个问题,我的问题是我如何进行更改和使用 MySQL Workbench 的“正向工程师”功能。我最初创建了 groupLineId ID 为 INT 类型的数据库。然后我更改了模型,使两个表中的 groupLineId 都变为 VARCHAR(12)。然后,当我运行“Forward Engineer”时,它会首先编写新的 groupLine 表并将 groupLineId 的类型更改为 VARCHAR(12),然后这会破坏现有的 FROGIEN 键和 salesItemLine 表,该表尚未更新且类型仍然为groupeLineId 为 INT。

解决方案是在重新运行正向工程之前删除两个表。 (或者至少手动删除现有约束)

关于MySQL 外键约束不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60708866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com