我的表结构:
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声明失败。
答案 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);
我迟到了,我想^^