CREATE TABLE class(
cid INT NOT NULL,
cname VARCHAR(10)
);
CREATE TABLE stu2(
sid INT,
sname VARCHAR(10),
sage INT NOT NULL,
sid_number VARCHAR(18),
scla_name VARCHAR(10),
CONSTRAINT pk_stu2_sid_number PRIMARY KEY(sid,sid_number),
CONSTRAINT fk_stu2_scla_name FOREIGN KEY(scla_name) REFERENCES class(cname),
CONSTRAINT uq_stu2_sname UNIQUE(sname)
);
其中class表已经建立好,在建立stu2时出现Can't create table 'store4.stu2' (errno: 150)这个问题,为什么会出现这个问题,怎么改正
参考GPT和自己的思路:这个问题是因为在stu2表中引用了class表的cname字段,但是cname字段不是class表的主键。所以需要确保stu2表中引用的字段是class表的主键(cid字段)。您需要将scla_name字段改为cid字段,如下所示:
CREATE TABLE class(
cid INT NOT NULL,
cname VARCHAR(10),
PRIMARY KEY (cid)
);
CREATE TABLE stu2(
sid INT,
sname VARCHAR(10),
sage INT NOT NULL,
sid_number VARCHAR(18),
scla_cid INT,
CONSTRAINT pk_stu2_sid_number PRIMARY KEY(sid,sid_number),
CONSTRAINT fk_stu2_scla_cid FOREIGN KEY(scla_cid) REFERENCES class(cid),
CONSTRAINT uq_stu2_sname UNIQUE(sname)
);
这样就可以成功创建stu2表了。
CREATE TABLE class(
cid INT NOT NULL,
cname VARCHAR(10),
PRIMARY KEY(cid)
);
CREATE TABLE stu2(
sid INT,
sname VARCHAR(10),
sage INT NOT NULL,
sid_number VARCHAR(18),
scla_name VARCHAR(10),
PRIMARY KEY(sid,sid_number),
CONSTRAINT fk_stu2_scla_name FOREIGN KEY(scla_name) REFERENCES class(cname),
CONSTRAINT uq_stu2_sname UNIQUE(sname)
);
博主你试一下这段可以吗?