我正在爲我的大學任務創建我的第一個MySQL數據庫。不幸的是,我一直試圖用它們之間的外鍵創建實際的表。MySQL:無法創建表(errno:150)
這是錯誤的MySQL工作臺正向工程嚮導爲:
執行SQL腳本在服務器
ERROR: Error 1005: Can't create table 'test.fremført' (errno: 150)
CREATE TABLE IF NOT EXISTS `Fremført` (
`Plate` VARCHAR(20) NOT NULL ,
`Verk` VARCHAR(45) NOT NULL ,
`Artist` VARCHAR(45) NOT NULL ,
`Dato` DATE NULL ,
PRIMARY KEY (`Plate`, `Verk`, `Artist`) ,
INDEX `Fremført->Artist_idx` (`Artist` ASC) ,
INDEX `Fremført->Spor_idx` (`Plate` ASC, `Verk` ASC) ,
CONSTRAINT `Fremført->Artist`
FOREIGN KEY (`Artist`)
REFERENCES `Artist` (`ArtistNavn`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `Fremført->Spor`
FOREIGN KEY (`Plate` , `Verk`)
REFERENCES `Spor` (`Verk` , `Verk`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
有誰知道什麼地方錯了上面的腳本,如果是有辦法解決嗎?
謝謝!
編輯: 這是要求斯波爾查詢
DROP TABLE IF EXISTS `Spor` ;
CREATE TABLE IF NOT EXISTS `Spor` (
`Plate` VARCHAR(45) NOT NULL ,
`Verk` VARCHAR(45) NOT NULL ,
`Spilletid` DECIMAL(3,2) NULL ,
PRIMARY KEY (`Plate`, `Verk`) ,
INDEX `Plate_idx` (`Plate` ASC) ,
CONSTRAINT `Plate`
FOREIGN KEY (`Plate`)
REFERENCES `Plate` (`KatalogNr`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
DROP TABLE IF EXISTS `Artist` ;
CREATE TABLE IF NOT EXISTS `Artist` (
`ArtistNavn` VARCHAR(30) NOT NULL ,
`Artistcol` VARCHAR(45) NULL ,
PRIMARY KEY (`ArtistNavn`))
ENGINE = InnoDB;
Post'CREATE TABLE Spor'和'CREATE TABLE Artist'。通常,Err150意味着主表和相關表之間存在數據類型不匹配。這也是可疑的:'參考文獻Spor(Verk,Verk)'也許應該是'(Plate,Verk)'? –
可能會成爲問題嗎? – Horen
第一篇文章更新了spor和藝術家查詢。我已經嘗試將ø更改爲o,但這不是它看起來的問題。 我已經將完整的腳本上傳到http://pastebin.com/ZFPiqFUs – user1736049