繁体   English   中英

MySQL:无法创建表(errno = 150)

[英]MySQL: can't create table (errno = 150)

我正在尝试创建SEASON和PLAYER表,如下所示:

CREATE TABLE SEASON(
    season_id INT NOT NULL,    #primary key can't be NULL
    start_date DATE,
    end_date DATE)
ENGINE = INNODB;

CREATE TABLE PLAYER(
    player_id INT NOT NULL,
    first_name VARCHAR(15) NOT NULL,
    last_name VARCHAR(15) NOT NULL,
    position VARCHAR(15),
    first_season_id INT,
    last_season_id INT,
    height_feet INT,
    height_inch INT,
    weight INT,
    college VARCHAR(30),
    birthday DATE,
    PRIMARY KEY(player_id),
    FOREIGN KEY(first_season_id) REFERENCES SEASON(season_id)
       ON DELETE CASCADE   ON UPDATE CASCADE,
    FOREIGN KEY(last_season_id) REFERENCES SEASON(season_id)
       ON DELETE CASCADE   ON UPDATE CASCADE,
    CHECK (height_feet > 0 AND height_inch >= 0 AND weight > 0))
ENGINE=INNODB;

我得到错误,我不能创建PLAYER表但我真的不明白为什么:(

尝试这个:

CREATE TABLE SEASON( season_id INT NOT NULL, start_date DATE, end_date DATE, PRIMARY KEY(season_id)) ENGINE = INNODB;

CREATE TABLE PLAYER( player_id INT NOT NULL, first_name VARCHAR(15) NOT NULL, last_name VARCHAR(15) NOT NULL, position VARCHAR(15), first_season_id INT, last_season_id INT, height_feet INT, height_inch INT, weight INT, college VARCHAR(30), birthday DATE, PRIMARY KEY(player_id), FOREIGN KEY(first_season_id) REFERENCES SEASON(season_id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY(last_season_id) REFERENCES SEASON(season_id) ON DELETE CASCADE ON UPDATE CASCADE, CHECK (height_feet > 0 AND height_inch >= 0 AND weight > 0)) ENGINE=INNODB;

它将season_id添加为主键。

使引用列成为主键,外键需要引用主键或唯一键。

http://sqlfiddle.com/#!2/4c60e

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM