无法在mysql中添加约束

时间:2016-06-13 12:41:29

标签: mysql foreign-keys constraints foreign-key-relationship

我的表结构:

CREATE TABLE USER
(
 id            INTEGER,
 name          VARCHAR(50),
 gender        VARCHAR(2),
 dateofbirth   DATE,
 song_id       INTEGER,
 ratings       INTEGER
);



CREATE TABLE song
(
  id             INTEGER,
  name           VARCHAR(50),
  lengthofsong   INTEGER,
  album_id       INTEGER
);

我的约束添加查询:

ALTER TABLE USER  ADD CONSTRAINT fk_song_id FOREIGN KEY(song_id) REFERENCES song(id);

错误我得到了:

  

执行SQL命令时发生错误:ALTER TABLE USER   ADD CONSTRAINT fk_song_id FOREIGN KEY(song_id)REFERENCES song(id)

     

无法创建表格' test。#sql-4f7_33' (错误:150)

执行时间:0.1秒

1声明失败。

2 个答案:

答案 0 :(得分:0)

尝试添加主键,错误150与您没有适当约束的主键相关

CREATE TABLE USER
(
   id            INTEGER NOT NULL AUTO_INCREMENT,
   name          VARCHAR(50),
   gender        VARCHAR(2),
   dateofbirth   DATE,
   song_id       INTEGER,
   ratings       INTEGER,
   PRIMARY KEY (`id`),
);



CREATE TABLE song
(
 id             INTEGER  INTEGER NOT NULL AUTO_INCREMENT,
 name           VARCHAR(50),
 lengthofsong   INTEGER,
 album_id       INTEGER
 PRIMARY KEY (`id`),
);

答案 1 :(得分:0)

您无法为简单字段创建外键,必须是主键: 所以歌曲的id必须是主键,所以可以创建一个外键引用

drop table user;
CREATE TABLE USER
(
 id            int,
 name          VARCHAR(50),
 gender        VARCHAR(2),
 dateofbirth   DATE,
 song_id       int,
 ratings       int
);

drop table song;
CREATE TABLE song
(
  id             int primary key ,
  name           VARCHAR(50),
  lengthofsong   int,
  album_id       int
);


ALTER TABLE USER  ADD CONSTRAINT fk_song_id FOREIGN KEY(song_id) REFERENCES song(id);

我迟到了,我想^^