mysql中1027报错

137 阅读1分钟

mysql报错1027

在浏览大佬文档中,运行mysql语句时发现报错,报错描述:[Err] 1072 - Key column 'sID' doesn't exist in table,译为表中不存在键列'sID',报错的创表代码如下:

CREATE TABLE Storage
(sD CHAR(6),
gID CHAR(6),
storageQUA INT,
storageTIME DATETIME,
safetystorageQUA CHAR(10),
PRIMARY KEY(sID,gID),
FOREIGN KEY (sID) REFERENCES store(sID),
FOREIGN KEY (gID) REFERENCES goods(gID)
)

sID在store表中为主键,小白想通过将该主键设置其他表的外键,关联两个表格,store表如下:

mysql> desc store;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| sID   | char(6)    | NO   | PRI | NULL    |       |
| sADD  | varchar(8) | YES  |     | NULL    |       |
| sLEAD | varchar(4) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+

小白猜测代码报错有三个可能:
1.mysql中不能把主键和外键设为一个;
2.mysql中的列不匹配;
3.mysql的外键不能同时设置两个; 排查到最后,发现问题出现在第二行定义那里,改正如下:

CREATE TABLE Storage
(sID CHAR(6),
gID CHAR(6),
storageQUA INT,
storageTIME DATETIME,
safetystorageQUA CHAR(10),
PRIMARY KEY(sID,gID),
FOREIGN KEY (sID) REFERENCES store(sID),
FOREIGN KEY (gID) REFERENCES goods(gID)
)

原来这个sID是没有在建的这个表里命名,并不是store。 错误分析:都没有定义id,当然不可能成为主键啦。

图片用img标签改不了大小,编辑器还在学呜呜呜,你看大猫咪也很可爱喵