1
CREATE TABLE IF NOT EXISTS `userinit` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usn` varchar(20) NOT NULL,
  `pwd` varchar(20) NOT NULL,
  `cmnd` int(9) NOT NULL,
  `dienthoai` varchar(11) NOT NULL,
  PRIMARY KEY (`id`,`usn`,`cmnd`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

这是我在 mysql 中创建的第一个表,然后我进行查询以创建我的第二个表 userinfo,如下

create table userinfo(
    cmnd int(9) primary key not null,
        ngaycapcmnd date,
        noicap varchar(50) character set utf8,
        hoten varchar(50) character set utf8 not null,
        ngaysinh date not null,
        quequan varchar(50) character set utf8,
        diachi varchar(100) character set utf8 not null,
        email varchar(100) unique not null,
        constraint fk_userinfo_userinit foreign key (cmnd) references userinit(cmnd)
)

然后当我按 OK 时显示:#1005 - 无法创建表 'xbook.userinfo'(错误号:150)。我使用最新的xampp。你们能帮我解决这个问题吗

4

1 回答 1

0

这是因为您引用的列没有单独的键,尽管它是复合键的一部分

尝试KEY在其中添加一个,例如

CREATE TABLE IF NOT EXISTS `userinit` 
(
  ......
  KEY (cmnd),         -- <<=== HERE
  PRIMARY KEY (`id`,`usn`,`cmnd`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
于 2013-04-14T13:59:42.327 回答