用的mysql 4.1三张表:两个实体:user,role,一个联系:user_rolesql语句分别是:create table user
( id int not null AUTO_INCREMENT,
  username varchar(50) not null,
  password varchar(50) not null,
  primary key(id,username))type=innodb 
create table role 
( id int not null AUTO_INCREMENT,
  rolename varchar(50) not null,
  roleinfo varchar(50) not null,
  primary key(id,rolename))type=innodb 
======================================================
上面两个表没有问题.下面这个表就建不起来,总是说1005错误.CREATE TABLE `user_role` (
  `id` int(11) NOT NULL auto_increment,
  username varchar(50) not null,
  rolename varchar(50) not null,
  PRIMARY KEY  (id,username,rolename),
  foreign key(username) REFERENCES user on delete RESTRICT,
  foreign key(rolename) REFERENCES role on delete RESTRICT)type=innodb;请问大家我这外键约束有错误么,望大家不吝赐教.

解决方案 »

  1.   

    这里外键是另外两个表的主键啊...
    primary key(id,username)
    ......
    primary key(id,rolename)
    ...
    username,rolename两个分别是user,role表的主键,有错么
      

  2.   

    username,rolename两个分别是user,role表的主键
    -----------------------------------------------
        username,rolename两个分别是user,role表的主键列表成员..
    如果ID是自增长型的,不需要做主键吧,unique就行了.另:REFERENCES user 后面都没指定列名.