mysql 创建外键提示ERROR 1064(42000)错误,谢谢

yoyoyuye 2011-03-07 03:52:09
在mysql创建如下表的时候,提示错误,请大家帮忙看看,谢谢!

mysql>create table Course(
Cno char(4) primary key,
Cname CHAR(40),
Cpno char(4),
Ceredit snallint,
FOREIGN KEY Cpno REFERENCES Course(Cno)
);

无法创建成功,提示外键这行出错,这个是<数据库系统概论>里面创建课程表的例子。谁帮忙解答下,谢谢!
...全文
970 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
orionzww 2011-11-01
  • 打赏
  • 举报
回复
我也遇到了这个1064错误,跟你的描述不一样。
peerless115 2011-04-13
  • 打赏
  • 举报
回复
thanks
yoyoyuye 2011-03-08
  • 打赏
  • 举报
回复
确实是这样,非常谢谢2位!
当我在创建SC表的时候

create table SC(
Sno char(7),
index using btree (Sno),
Cno char(4),
index using btree (Cno),
Grade smallint,
primary key(Sno,Cno),
foreign key (Sno) references student(Sno),
foreign key (Cno) references Course(Cno))
engine=Innodb;

这个提示了"cant`t create table databook.sc errno 150"
当我将Sno char(7)改为Sno char(9)的时候,可以创建成功,难道char(7)和char(9)不是同一种数据类型?mysql刚学,谢谢!
ACMAIN_CHM 2011-03-08
  • 打赏
  • 举报
回复
create table Course(
Cno char(4) primary key,
Cname char(40),
Cpno char(4),
INDEX using BTREE (Cpno),
Ceredit smallint,
foreign key (Cpno) references Course(Cno)
) ENGINE=InnoDB;


语法说明上有这个()
WWWWA 2011-03-08
  • 打赏
  • 举报
回复
CREATE TABLE Course(
Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
/*表内创建索引*/
INDEX USING BTREE (Cpno),
Ceredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno))
ENGINE=INNODB;
yoyoyuye 2011-03-08
  • 打赏
  • 举报
回复

mysql> create table Course(
-> Cno char(4) primary key,
-> Cname char(40),
-> Cpno char(4),
/*表内创建索引*/
-> INDEX using BTREE (Cpno),
-> Ceredit smallint,
-> foreign key Cpno references Course(Cno))
-> ENGINE=InnoDB;
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near 'references Course(Cno))
engine=InnoDB;

谢谢楼上2位的回复,我根据WWWWA的意见,参考了mysql官方手册,但是还是没成功。错误提示如上所示,请帮忙看看,谢谢!
ACMAIN_CHM 2011-03-07
  • 打赏
  • 举报
回复
错误信息是什么? 导致这无法创建外键的原因很多,楼主至少要反错误信息贴出来以供别人分析。
WWWWA 2011-03-07
  • 打赏
  • 举报
回复
为了建立两个MySQL表之间的一个外键关系,必须满足以下三种情况:

* 两个表必须是InnoDB表类型。
* 使用在外键关系的域必须为索引型(Index)。
* 使用在外键关系的域必须与数据类型相似。
yoyoyuye 2011-03-07
  • 打赏
  • 举报
回复
smallint写错了。请忽略,谢谢!

56,800

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧