+ -
当前位置:首页 → 问答吧 → 创建外键失败,不知原因

创建外键失败,不知原因

时间:2008-02-18

来源:互联网

两个表,bag_user和bag_item

执行第三段语句出现Can't create table '.\test\#sql-820_e.frm' (errno: 121)

create table bag_user (
  id bigint not null auto_increment,
  name varchar(255),
  primary key (id)
);

create table bag_item (
  id bigint not null,
  name varchar(255)
);

alter table bag_item
  add index id (id),
  add constraint id
  foreign key (id)
  references bag_user (id);

作者: ayala_strike   发布时间: 2008-02-18

在create后面要指定数据库类型为innodb,如:
create table bag_user (
  id bigint not null auto_increment,
  name varchar(255),
  primary key (id)
)ENGINE=InnoDB;
两个表都必须是innodb才可以使用约束外键

作者: newflypig   发布时间: 2008-02-18

两个表都是innodb啊

作者: ayala_strike   发布时间: 2008-02-18

SQL code

create   table   bag_user   (
        id   bigint   not   null   auto_increment,
        name   varchar(255),
        primary   key   (id)
) engine innodb;

create   table   bag_item   (
        id   bigint   not   null,
        foreign key fk_id (id) references bag_user(id),
        name   varchar(255)
) engine innodb;

作者: yueliangdao0608   发布时间: 2008-02-19

原因找到了,是因为我已经存在一个fk名为“id”了。我用一个不重复的名字作为fk name就可以了。
不过还是要谢谢大家的热心。

作者: ayala_strike   发布时间: 2008-02-19

晕倒

作者: rainbowliuliang   发布时间: 2008-02-19

mark

作者: ydlchina   发布时间: 2008-02-19

那就结贴吧。^_^

作者: yueliangdao0608   发布时间: 2008-02-19



id 重复了



== 思想重于技巧 ==

作者: liuyann   发布时间: 2008-02-19

最基本的问题。




问题解决,请及时结贴。 

管理帖子--> 输入密码--> 给分--> 结贴

作者: wangtiecheng   发布时间: 2008-02-20

我遇到的150是怎么回事啊

作者: wuzhiwenk3001   发布时间: 2011-08-16