错误:错误1005:无法创建表'cat10e.recording'(错误号:150)

时间:2014-04-24 16:13:14

标签: mysql

我正在尝试设计我的数据库,其中包含7个表,但其中一个正在向我发送错误。我真的不知道该怎么做,因为它的设置就像我的其他表一样,所以我不确定导致错误的原因和google返回了大量不同的答案。相册SQL:pastebin.com/A3axVAA5

Executing SQL script in server

ERROR: Error 1005: Can't create table 'cat10e.recording' (errno: 150)

CREATE TABLE IF NOT EXISTS `cat10e`.`recording` (
 `rec_id` SMALLINT NOT NULL,
  `album_id` INT NOT NULL,
  `rec_duration` TIME NOT NULL,
  `rec_genre` VARCHAR(45) NOT NULL,
  `rec_cost` DECIMAL(4,2) NOT NULL,
  `rec_title` VARCHAR(45) NOT NULL,
  `rec_date` DATE NOT NULL,
  `rec_note` VARCHAR(255) NULL,
  PRIMARY KEY (`rec_id`, `album_id`),
  INDEX `fk_recording_album1_idx` (`album_id` ASC),
  CONSTRAINT `fk_recording_album1`
 FOREIGN KEY (`album_id`)
REFERENCES `cat10e`.`album` (`album_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB

SQL script execution finished: statements: 21 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

1 个答案:

答案 0 :(得分:0)

查看album表的DDL,album_id列的定义如下:

`album_id` SMALLINT NOT NULL

album_id表中的recording列定义为:

`album_id` INT NOT NULL

尝试将album_id表格中的recording列更改为:

`album_id` SMALLINT NOT NULL

如果您想从recordingalbum_idalbum设置FK,则必须匹配。album_id