使用以下脚本,当我尝试创建NetBankingTransaction表时,它失败并显示以下消息:
错误代码:1005。无法创建表'wah_schema. netbankingtransaction'(错误号:150)
数据库脚本:
CREATE TABLE IF NOT EXISTS `wah_schema`.`Transaction` (
`idTransaction` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`idOrder` INT UNSIGNED NOT NULL ,
`type` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`idTransaction`, `idOrder`, `type`) )
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `wah_schema`.`NetBankingTransaction` (
`idTransaction` INT NOT NULL ,
`bankCode` VARCHAR(45) NOT NULL ,
`type` VARCHAR(45) NOT NULL DEFAULT 'NETBANKING' ,
PRIMARY KEY (`idTransaction`, `type`) ,
INDEX `fk_NetBankingTransaction_Transaction1` (`idTransaction` ASC, `type` ASC) ,
CONSTRAINT `fk_NetBankingTransaction_Transaction1`
FOREIGN KEY (`idTransaction` , `type` )
REFERENCES `wah_schema`.`Transaction` (`idTransaction` , `type` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
有人能帮助我理解为什么我会得到这个错误吗?
3条答案
按热度按时间kzmpq1sx1#
这一个适合我:
NetBankingTransaction表中的idTransaction必须是无符号的。您需要在
Transaction
表中的(idTransaction,type
)上建立索引。您的主键不满足FK要求,因为它超过了三列。注:在NetBankingTransaction表中不需要此参数
步进x1米2英寸(x1米3英寸自动校准,x1米4英寸自动校准)
oknwwptz2#
您需要
Transaction (idTransaction, type)
中的UNIQUE KEY
才能正确添加外键约束。uwopmtnx3#
idTransaction在每个表中是不同的类型。一个是unsigned,另一个是signed。尝试在第二个表中使idTransaction成为unsigned。