大学での課題として、初めての MySQL データベースに取り組んでいます。残念ながら、その間に外部キーを持つ実際のテーブルを作成しようとしてしばらく立ち往生していました。
これは、MySQL Workbench フォワード エンジニアリング ウィザードが表示するエラーです。
サーバーで 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
上記のスクリプトの何が問題なのかを知っている人はいますか?もしそうなら、解決策はありますか?
ありがとう!
編集: これは要求された spor クエリです
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;