mysql报错 "Foreign key constraint is incorrectly formed

limo1996 2017-09-19 11:38:08

DROP TABLE IF EXISTS trade;

CREATE TABLE trade(
tradeid INT(11) not NULL auto_increment,
userid INT(11) NOT NULL,
tradetime datetime NOT NULL,
PRIMARY KEY (tradeid),
CONSTRAINT user_id_fk FOREIGN KEY(userid) REFERENCES userinfo(userid)
)ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

DROP TABLE if exists userinfo;

CREATE TABLE userinfo(
userid INT(11) NOT NULL auto_increment,
username VARCHAR(50) DEFAULT NULL,
accountid int(11) DEFAULT NULL,
PRIMARY KEY (userid),
CONSTRAINT account_id_fk FOREIGN KEY (accountid) REFERENCES account(accountid)
)ENGINE=INNODB auto_increment=7 DEFAULT charset=utf8;


这是两张表的脚本
...全文
3104 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
limo1996 2017-09-20
  • 打赏
  • 举报
回复
已解决,谢谢大家。
游北亮 2017-09-19
  • 打赏
  • 举报
回复
mysql写到sql server了…… 你首先要确认是创建哪个外键报错了, 然后贴出报错的那个表 以及关联表的定义
二月十六 2017-09-19
  • 打赏
  • 举报
回复
建表顺序应该是account、userinfo、trade因为后边的表都是以前表字段为外键的,如果表都没有,就没有外键,就报错了
limo1996 2017-09-19
  • 打赏
  • 举报
回复
先建立了 Trade表

CREATE TABLE trade(
tradeid INT(11) not NULL auto_increment,
userid INT(11) NOT NULL,
tradetime datetime NOT NULL,
PRIMARY KEY (tradeid),
CONSTRAINT user_id_fk FOREIGN KEY(userid) REFERENCES userinfo(userid)
)ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;



这是外键约束

下面是关联表

CREATE TABLE userinfo(
userid INT(11) NOT NULL auto_increment,
username VARCHAR(50) DEFAULT NULL,
accountid int(11) DEFAULT NULL,
PRIMARY KEY (userid),
CONSTRAINT account_id_fk FOREIGN KEY (accountid) REFERENCES account(accountid)
)ENGINE=INNODB auto_increment=7 DEFAULT charset=utf8;


数据库报错如下:
[Err] 1005 - Can't create table `bookstore`.`trade` (errno: 150 "Foreign key constraint is incorrectly formed")



繁花尽流年 2017-09-19
  • 打赏
  • 举报
回复
引用 2 楼 litter1996 的回复:
先建立了 Trade表

CREATE TABLE trade(
  tradeid INT(11) not NULL auto_increment,
  userid INT(11) NOT NULL, 
  tradetime datetime NOT NULL,
  PRIMARY KEY (tradeid),
  CONSTRAINT user_id_fk FOREIGN KEY(userid) REFERENCES userinfo(userid)
)ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
这是外键约束 下面是关联表

CREATE TABLE userinfo(
 userid INT(11) NOT NULL auto_increment,
 username VARCHAR(50) DEFAULT NULL,
 accountid int(11) DEFAULT NULL,
 PRIMARY KEY (userid),
 CONSTRAINT account_id_fk FOREIGN KEY (accountid) REFERENCES account(accountid) 
)ENGINE=INNODB auto_increment=7 DEFAULT charset=utf8;
数据库报错如下: [Err] 1005 - Can't create table `bookstore`.`trade` (errno: 150 "Foreign key constraint is incorrectly formed")
确保account和userinfo都已经创建了嘛

591

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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